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)
}