Vue router 每个导航保护错误之前的vue路由器:

Vue router 每个导航保护错误之前的vue路由器:,vue-router,Vue Router,我有一个与之类似的问题,但这里提到的所有解决方案都不适用于我。我的情况有什么不同 我在“团队”页面上。在我的应用程序中单击导航栏中的链接时,会调用router.push({name:“polls”})导航到“polls”页面。但是我得到了一个错误,导航被取消了。为什么? 错误消息 Uncaught (in promise) Error: Navigation cancelled from "/team" to "/polls" with a new nav

我有一个与之类似的问题,但这里提到的所有解决方案都不适用于我。我的情况有什么不同

我在“团队”页面上。在我的应用程序中单击导航栏中的链接时,会调用
router.push({name:“polls”})
导航到“polls”页面。但是我得到了一个错误,导航被取消了。为什么?

错误消息

Uncaught (in promise) Error: Navigation cancelled from "/team" to "/polls" with a new navigation.
    at createRouterError (vue-router.esm.js:2065)
    at createNavigationCancelledError (vue-router.esm.js:2047)
    at vue-router.esm.js:2394
    at step (vue-router.esm.js:2001)
    at step (vue-router.esm.js:2008)
    at runQueue (vue-router.esm.js:2012)
我有一个相当复杂的
beforeach()

router.beforeach((routeTo,routeFrom,next)=>{
//请记住,在这个方法中,next()必须只调用一次。
console.log(“每次输入前”,routeFrom.path,=>,routeTo.path)
tryToAuthenticate()。然后(()=>{
log.debug(“vue路由器:已验证”,routeFrom.path,=>,routeTo.path)
if(routeTo.path==”/“| | routeTo.path==”/index.html”){
下一个({name:“teamHome”})
}否则{
下一个()
}
}).catch(()=>{
log.debug(“vue路由器:匿名”,routeFrom.path,=>,routeTo.path)
if(routeTo.meta.public){
下一个()
}else if(routeTo.path==”/“| | routeTo.path==”/index.html”){
下一个({name:“welcome”})
}否则{
下一步({name:“login”})
}
})
})
当用户经过真正的身份验证并且JWT存储在localStorage中时,
tryToAuthenticated()
方法返回一个承诺。事实就是这样。在我的测试用例中,用户已登录

即使我删除了所有这些,并且只在beforeach钩子中对
next()
进行了默认调用,我仍然会得到相同的错误

我在其他问题中尝试了所有建议的解决方案:

  • 捕获返回的错误:
    router.push('/polls').catch(()=>{})=>这会捕获错误,但页面仍不会切换到预期的目标页面“轮询”
  • 将router.push替换为有效的
  • FunFact:点击两次按钮第二次也可以
调试

此错误出现在vue router.esm.js的方法中

runQueue(队列、迭代器、函数(){
//在解决异步组件之前,请等待
//在组件中提取
var enterGuards=extractEnterGuards(已激活);
var queue=enterGuards.concat(这个$1.router.resolveHooks);
运行队列(队列、迭代器、函数(){
如果(此$1.0待定!==路由){//