问题详情
Error: Redirected from "/" to "{}" via a navigation guard. at createRouterError (webpack-internal:///./node_modules/vue-router/dist/vue-router.mjs:926:19) at next (webpack-internal:///./node_modules/vue-router/dist/vue-router.mjs:2249:16) at eval (webpack-internal:///./node_modules/vue-router/dist/vue-router.mjs:2303:28) at eval (webpack-internal:///./src/router/index.js:34:12) at eval (webpack-internal:///./node_modules/vue-router/dist/vue-router.mjs:2266:31) at new Promise () at eval (webpack-internal:///./node_modules/vue-router/dist/vue-router.mjs:2237:16) at eval (webpack-internal:///./node_modules/vue-router/dist/vue-router.mjs:3917:63)
中文解释:你从路径 A 又跳转到路径 A,有毛病?我不乐意了,报个错你自己看吧。
解决办法
-
vue-router 版本降级,但是需要注意 vue 和 vue-router 的版本对应。(其它伙伴的解决方案,我试了下 vue3 用3.X的 router 会导致版本不对应,失败。)
-
尝试了其他办法,成功避免了错误。
- 修改前:
router.beforeEach((to, from, next) => {
console.log(from.path + '->' + to.path)
const isLogin = false
if (isLogin || to.name === 'Login') {
return next()
} else {
return next({ name: 'Login' })
}
})
- 修改后:
router.beforeEach((to, from, next) => {
console.log(from.path + '->' + to.path)
const isLogin = false
if (isLogin || to.name === 'Login') {
return next()
} else {
router.push('/login')
return next()
}
})