Попытка создать localStorage не работает (NextJS)

#javascript #next.js

#javascript #next.js

Вопрос:

Мне нужно перенести данные инвентаризации в мое приложение NextJS, затем я пытаюсь сохранить эти данные в localStorage, но они никогда не устанавливаются. Что я делаю не так?

 if (process.browser amp;amp; localStorage.getItem('inv') === undefined) {
    const inv = await getInventory()
    localStorage.setItem('inv', inv)
  }
  

getInventory() — это просто скрипт узла, который извлекает данные инвентаризации из удаленного API и возвращает fullInventory.

Вот код из getInventory():

 const getInventory = async () => {
  const token = await refreshToken()
  const header = {
    Authorization: `Bearer ${token}`,
  };

  const queries = await getQueriesCount();

  axios.interceptors.response.use(function (response) {
    return response;
  }, async function (error) {
    await new Promise(function (res) {
      setTimeout(function () { res() }, 2000);
    });

    const originalRequest = error.config;

    if (error.response.status === 401 amp;amp; !originalRequest._retry) {
      originalRequest._retry = true;
      const refreshedHeader = await setHeader()
      axios.defaults.headers = refreshedHeader
      originalRequest.headers = refreshedHeader
      return Promise.resolve(axios(originalRequest));
    }
    return Promise.reject(error);
  });

  let fullInventory = [];

  for (let i = 0; i < queries; i  ) {
    setTimeout(async () => {
      try {
        const res = await axios({
          url: `${MyApi}/Item.jsonamp;offset=${i * 100}amp;customSku=!~,`,
          method: "get",
          headers: header,
        });

        console.log(`adding items ${i * 100} through ${(i   1) * 100}`);
        const items = await res.data.Item;
        items[0]
          ? (fullInventory = fullInventory.concat(items))
          : fullInventory.push(items);

        if (i   1 === queries) {
          return fullInventory;
        }
      } catch (error) {
        console.error("We have a problem here: ", error.response);
      }
    }, 2000 * i);
  };
}
  

Комментарии:

1. попробуйте это localStorage.setItem(‘inv’, JSON.stringify(inv))

2. localStorage.getItem('inv') === undefined неверно … возможно localStorage.getItem('inv') === null , есть (поскольку .getItem возвращает null not undefined , если свойство не существует) — документация … вы могли бы протестировать localStorage.inv === undefined , хотя

3. Я забыл, что это должна быть строка :), но все равно не работает :(. Возможно, это мой скрипт getInventory.

4. по-прежнему localStorage.getItem('inv') === undefined никогда не бывает истинным

5. Если я установлю localStorage.GetItem(‘inv’) === null, getInventory() не запускается. И, определенно, в localStorage ничего нет?