web-dev-qa-db-fra.com

"La fenêtre n'est pas définie" dans nuxt.js

Je reçois une erreur d'erreur de Vue.js à Nuxt.js.

J'essaie d'utiliser vue-session dans node_modules. Il compile avec succès, mais dans le navigateur, je vois l'erreur:

La fenêtre de référenceError n'est pas définie

node_modules\vue-session\index.js:

VueSession.install = function(Vue, options) {
    if (options && 'persist' in options && options.persist) STORAGE = window.localStorage;
    else STORAGE = window.sessionStorage;
    Vue.prototype.$session = {
        flash: {
          parent: function() {
            return Vue.prototype.$session;
          },

donc, j'ai suivi cette documentation :

rewardadd.vue:

import VueSession from 'vue-session';

Vue.use(VueSession);

if (process.client) {
  require('vue-session');
}

nuxt.config.js:

  build: {
    vendor: ['vue-session'],

Mais je ne peux toujours pas résoudre ce problème.

18
HM.Park

Si vous avez essayé la plupart des réponses ici et que cela ne fonctionne pas, vérifiez cela, j'ai également eu le même problème lorsque vous utilisez PayStack un package de paiement. Donc, je vais utiliser les instances de l'OP

Créez un plugin avec .client.js comme extension de sorte qu'il puisse être rendu sur le côté du client que dans le dossier Plugins Créer un fichier 'vue-session.client.js' qui est le plugin et mettez ceci

import Vue from 'vue'
import VueSession from 'vue-session'
//depending on what you need it for
Vue.use(VueSession)
// I needed mine as a component so I did something like this
Vue.component('vue-seesion',VueSession)

donc, dans nuxt.config.js, enregistrez le plugin en fonction de votre chemin de plug-in

plugins:[
...
{ src: '~/plugins/vue-session.client.js'},
...
]

Dans Index.Vue ou quelle que soit la page, vous souhaitez utiliser le package ... Importer le package sur monté, de sorte qu'il est disponible lorsque la page client monte ... export par défaut {...

 mounted() {
   if (process.client) {
     const VueSession = () => import('vue-session')
   }
 }

...
}
0
Ilesanmi John