我每次访问这条路线时都会在我的控制台中收到此错误
I keep getting this error in my console everything i visit this route
VM28353:1 Uncaught (in promise) SyntaxError: Unexpected token o in JSON at position 1
at JSON.parse (<anonymous>)
at getUser (auth.js?c7d4:11)
at wrappedGetter (vuex.esm-browser.js?5502:335)
at Object.eval [as getUser] (vuex.esm-browser.js?5502:88)
at Object.get [as getUser] (vuex.esm-browser.js?5502:135)
at Proxy.getuser (Profile.vue?c66d:98)
at ReactiveEffect.run (reactivity.esm-bundler.js?a1e9:160)
at ComputedRefImpl.get value [as value] (reactivity.esm-bundler.js?a1e9:1086)
at Object.get [as getuser] (runtime-core.esm-bundler.js?5c40:2109)
at Proxy.render (Profile.vue?c66d:26)
Profile.vue
这是唯一调用 getters
的文件
computed: {
getuser() {
return this.$store.getters.getUser;
},
},
Auth.js
在控制台中,它的状态是错误来自我的 auth 模块中的 getUser getter
const getters = {
isLoggedIn: (state) => !!state.token,
getUser: (state) => JSON.parse(state.user),
getToken: (state) => state.token,
};
const mutations = {
setToken: (state, payload) => {
state.token = payload;
localStorage.setItem("auth_token", payload);
},
setUser: (state, payload) => {
state.user = payload;
localStorage.setItem("user", JSON.stringify(payload));
},
};
我猜 state.user
已经是一个对象因此您不需要使用 JSON.parse
因为 JSON.parse()
将输入转换为字符串。默认情况下 JavaScript 个对象的 toString() 方法 returns [object 对象],导致观察到的行为。
尝试删除它,这样您的代码就应该是
const getters = {
isLoggedIn: (state) => !!state.token,
getUser: (state) => state.user,
getToken: (state) => state.token,
};
VM28353:1 Uncaught (in promise) SyntaxError: Unexpected token o in JSON at position 1
at JSON.parse (<anonymous>)
at getUser (auth.js?c7d4:11)
at wrappedGetter (vuex.esm-browser.js?5502:335)
at Object.eval [as getUser] (vuex.esm-browser.js?5502:88)
at Object.get [as getUser] (vuex.esm-browser.js?5502:135)
at Proxy.getuser (Profile.vue?c66d:98)
at ReactiveEffect.run (reactivity.esm-bundler.js?a1e9:160)
at ComputedRefImpl.get value [as value] (reactivity.esm-bundler.js?a1e9:1086)
at Object.get [as getuser] (runtime-core.esm-bundler.js?5c40:2109)
at Proxy.render (Profile.vue?c66d:26)
Profile.vue 这是唯一调用 getters
的文件computed: {
getuser() {
return this.$store.getters.getUser;
},
},
Auth.js 在控制台中,它的状态是错误来自我的 auth 模块中的 getUser getter
const getters = {
isLoggedIn: (state) => !!state.token,
getUser: (state) => JSON.parse(state.user),
getToken: (state) => state.token,
};
const mutations = {
setToken: (state, payload) => {
state.token = payload;
localStorage.setItem("auth_token", payload);
},
setUser: (state, payload) => {
state.user = payload;
localStorage.setItem("user", JSON.stringify(payload));
},
};
我猜 state.user
已经是一个对象因此您不需要使用 JSON.parse
因为 JSON.parse()
将输入转换为字符串。默认情况下 JavaScript 个对象的 toString() 方法 returns [object 对象],导致观察到的行为。
尝试删除它,这样您的代码就应该是
const getters = {
isLoggedIn: (state) => !!state.token,
getUser: (state) => state.user,
getToken: (state) => state.token,
};