Javascript Nuxtjs Vue会话-无法读取属性';出口';未定义的

Javascript Nuxtjs Vue会话-无法读取属性';出口';未定义的,javascript,vue.js,nuxt.js,Javascript,Vue.js,Nuxt.js,我想在numxt.js中支持Vue会话 我已经用Vue.js创建了一个网站,但是它对SEO不好 因此,我使用Nuxt.js创建了一个新的前端。 我将一些组件从目录Vue.js复制到Nuxt.js并运行 但它不起作用。我在标题.vue-登录中收到一个错误。这是我的密码 打字错误 无法读取未定义的属性“exits” https://imgur.com/a/hkccHvL 在标题中,vue这里有代码,请查看 <template> <b-navbar sticky tog

我想在
numxt.js
中支持
Vue会话

我已经用
Vue.js
创建了一个网站,但是它对
SEO
不好

因此,我使用
Nuxt.js
创建了一个新的前端。 我将一些组件从目录
Vue.js
复制到
Nuxt.js
并运行

但它不起作用。我在
标题.vue
-登录中收到一个错误。这是我的密码

打字错误

无法读取未定义的属性“exits”

https://imgur.com/a/hkccHvL
在标题中,vue这里有代码,请查看

<template>
      <b-navbar sticky toggleable="md" class="navbar-dark bd-navbar" type="dark">
        <b-navbar-toggle target="bd-main-nav" />
        <b-navbar-brand to="/">My Blog</b-navbar-brand>
        <b-collapse
          is-nav
          class="justify-content-between"
          id="bd-main-nav">
          <!-- Right aligned nav items -->
          <b-navbar-nav class="ml-auto">
            <b-nav-item v-if="this.isLoggedIn==true">     
              <span v-show="userName.length > 0" class="align-middle ml-2 text-color">
                {{userName}}
              </span>
              <b-button size="sm" class="my-2 my-sm-0 btn-outline-light btn-space" @click="clickToSignOut">
                Sign out
              </b-button>
            </b-nav-item>
            <b-nav-item v-else>
              <b-button size="sm" class="my-2 my-sm-0 btn-outline-light" 
                @click="this.clickToLogin"
                >Login
              </b-button>
            </b-nav-item>   
          </b-navbar-nav>
        </b-collapse>
      </b-navbar>
    </template>
    <script>
    export default {
        name: 'Header',
        data() {
          return {
            userName:'',
            profileUrl:'',
            isLoggedIn: false
          }
        },
        created() {
          if (this.$session.exits()) {
            let userObject = this.$session.get('loggedInUser')
            this.userName = userObject.name ? userObject.name : ''
            this.profileUrl = userObject.profileUrl ? userObject.profileUrl : ''
            this.isLoggedIn = userObject ? true : false
          } else {
            this.userName = ""
            this.profileUrl = ""
            this.isLoggedIn = false
          }
        },
        methods: {
          clickToLogin() {
            // this.$emit('clickToLogin')
            this.$router.push("Login")
          },
          clickToSignOut() {         
            this.userName = ''
            this.profileUrl = ''
            this.isLoggedIn = false           
            // this.$emit('clickToSignOut')   
            this.$session.destroy()
            this.$router.push('/')
          }, 
        }
    }
这是js部分的内容,请看一下并给我答案 插件/VueSession.js

import Vue from 'vue'
import VueSession from 'vue-session'
if (process.client) {
  Vue.use(VueSession)
}

您试图在创建的钩子中访问VueSession,该钩子在服务器端启动,而您的插件只在客户端加载,这就是VueSession未定义的原因

要么将代码从created()方法移动到mounted(),因为mounted()只在客户端执行,要么添加if(process.browser)检查,查看其客户端是否执行

或者,使用nuxt session(),它将是与Vue.js插件等效的nuxt.js


希望这有帮助,干杯

您的插件被设置为只应用于客户端,但您试图在服务器上执行的创建的钩子中访问它,所以hance a Error非常感谢!如何修复?使用它仅在客户端上执行的挂载钩子,或者将您的代码包装在使用if process.client创建的文件中
import Vue from 'vue'
import VueSession from 'vue-session'
if (process.client) {
  Vue.use(VueSession)
}