【发布时间】:2019-10-05 16:33:51
【问题描述】:
将 getter 导入 Rotate - Vuex 时出现问题。
我正在尝试导入 vuex 状态内的值。
报错,说明未定义。
我不知道我做错了什么。请,如果有人可以提供帮助,我将非常感激。
感谢收听
错误 类型错误:“_store__WEBPACK_IMPORTED_MODULE_4__.default.getters 未定义”
商店
import Vue from 'vue'
import Vuex from 'vuex'
import auth from './module-auth'
Vue.use(Vuex)
export default function () {
const Store = new Vuex.Store({
modules: {
auth
},
strict: process.env.DEV
})
return Store
}
模块认证 吸气剂
import decode from 'jwt-decode'
function isTokenExpired (state) {
try {
const decoded = decode(state.token)
if (decoded.exp < Date.now() / 1000) {
return true
} else return false
} catch (err) {
return false
}
}
export {
isTokenExpired,
}
路由器
import Vue from 'vue'
import VueRouter from 'vue-router'
import routes from './routes'
import store from '../store'
Vue.use(VueRouter)
export default function () {
const Router = new VueRouter({
scrollBehavior: () => ({ x: 0, y: 0 }),
routes,
mode: process.env.VUE_ROUTER_MODE,
base: process.env.VUE_ROUTER_BASE
})
Router.beforeEach((to, from, next) => {
const publicPages = ['/']
const authRequired = !publicPages.includes(to.path)
const loggedIn = store.getters['auth/isTokenExpired']
console.log(loggedIn)
if (authRequired && !loggedIn) {
return next('/')
}
next()
})
return Router
}
【问题讨论】:
-
您的代码看起来不错。错误可能在其他地方。检查导入的 store 是否真的是 store 变量、文件结构等。
-
感谢收听。我想我找到了问题所在。我需要实例化一个函数,而不是一个对象。有效。 store().getters['auth/isTokenExpired'] 正确吗?
-
一个对象,而不是一个函数 :)
-
我无法将此对象加载到索引路由中。显示错误。 =( .store.getters['auth/isTokenExpired'] - 未定义
标签: vue.js vuex vue-router