@vue/cli 4.3.1
vue-router: ^3.3.2
使用路由重定向做了登录验证后, 报错 : Error: Redirected from “/login” to “/index” via a navigation guard.
解决方案:
出现这个问题,先排查下是否自己的路由守卫beforeEach中判断进入了死循环 !!
方案一. 删除 node_modules
,到 package.json
中将 vue-router
改为 3.0.7 ,重新 npm i
(未测试)
方案二. 在 route.js 下粘贴一下代码 (使用中)
import VueRouter from 'vue-router'
// 解决Vue-Router升级导致的Uncaught(in promise) navigation guard问题
// push
const originalPush = VueRouter.prototype.push
VueRouter.prototype.push = function push (location, onResolve, onReject) {
if (onResolve || onReject) return originalPush.call(this, location, onResolve, onReject)
return originalPush.call(this, location).catch(err => err)
}
// replace
const originalReplace = VueRouter.prototype.replace
VueRouter.prototype.replace= function replace(location) {
return originalReplace.call(this, location).catch(err => err)
}
Vue.use(VueRouter)
参考资料: