Я работаю над приложением Nuxt JS, которое использует LocalStorage. При компиляции в режиме SPA
он работает правильно, однако мне нужно переключить мой проект в режим universal
, чтобы мои мета-заголовки и описания SEO работали при создании моего проекта, после переключения я получаю сообщение об ошибке на нескольких страницах, которые используют LocalStorage:
localStorage is not defined
У кого-нибудь есть предложения, чтобы исправить это?
как насчет window.localStorage
? Покажите часть кода
У вас нет localStorage, потому что в среде Node.js такого нет. У вас также нет объектов window
и document
.
https://ssr.vuejs.org/guide/universal.html#access-to-platform-specific-apis
Nuxt.js использует Vue SSR под капотом.
Однако у вас все еще есть магазин (Vuex). И он будет синхронизирован между узлом и браузером.
Мне нужно было, чтобы данные сохранялись между сеансами для GDPR. Вы можете использовать смонтированное событие жизненного цикла и дождаться доступности window.localStorage. Затем назначьте его свойству данных и добавьте v-if в тег-оболочку, чтобы страница не начинала отрисовку до того, как будет доступно localeStorage. Я делаю это со статической сборкой nuxt:
<div v-if = "localStorageReady">
Awesome stuff here...
</div>
data() {
return {
localStorageReady: false,
}
},
mounted() {
if (window.localStorage) {
this.localStorageReady = true
}
}
Конечно, это не работает, локальное хранилище существует только на клиенте в браузере, а не в узле.