这是我的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
来强制注销,这就是我的方法,我从名为forceLogout
的文件中调用api.js
操作
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
答案 0 :(得分:1)
我看不到您要将路由器导出到哪里。
router.js
应该包含export default router
,所以当您import router from '@/main'
时,它实际上会导入某些内容。