这是我的store
import Vue from 'vue'
import Vuex from 'vuex'
import router from '@/main';
import mainStore from './modules/main-store';
import loginStore from './modules/login-store';
Vue.use(Vuex)
export default new Vuex.Store({
modules: {
mainStore,
loginStore
}
});还有我的login-store.js
//other imports
import router from '@/main';
const actions = {
forceLogout(){
localStorage.removeItem('token')
localStorage.removeItem('user')
delete API.defaults.headers.common['Authorization']
router.push('/login')
},
//other actions
}还有我的router.js
import store from './stores'
Vue.use(Router)
const router = new Router({
mode: 'hash',
routes: [
{
path: '/login',
name: 'login',
component: Login,
},
]
//other routes
})
//... some router.afterEach and router.beforeEach
export default router在这种情况下,我需要store强制注销,这就是我如何做到的,我从一个名为api.js的文件中调用forceLogout操作。
import store from './../stores';
//....
if(error_msg == 'Not_Logged'){
store.dispatch('forceLogout')
}
//....我试过改变一个进口:
import router from 'vue-router'
//...
router.push('/login')进口也是一样
import router from '@/main'
router.push('/login')我一直在找TypeError: Cannot read property 'push' of undefined
发布于 2019-07-20 22:33:34
我看不出你在哪里输出路由器。
router.js应该包括export default router,所以当您使用import router from '@/main'时,它实际上是导入了一些东西。
https://stackoverflow.com/questions/57128295
复制相似问题