路由跳转时报错:
Uncaught (in promise) Error: Navigation cancelled from "/" to "/device/ruleEmail" with a new navigation.
问题分析: 这个错误的意思是在导航守卫中重定向了路由,从而导致了一个无限循环的问题。
通常,这个错误会出现在以下情况下:
在导航守卫中调用了 next 函数多次,或者在导航守卫中使用了 this.$router.push 或 this.$router.replace 方法进行了跳转。
导航守卫中的某个条件一直为真,从而导致了无限循环。
解决办法: 检查 router.beforeEach 中,哪里可能会导致循环调用 next 进行跳转。
下面是简答的会触发该错误的示例:
router.beforeEach(async (to, from, next) => {
if (true) {
return next({ name: 'home', replace: true });
}
next();
});
会一直循环进入 router.beforeEach 导致报错。