登录失败:Redirected from xxx via a navigation guard

时间 2020/8/6 13:48:49 加载中...

Vue 项目 登录跳转失败 Uncaught(in promise)

如下图:提示 Uncaught(in promise),具体原因不知。

图片来源 Github,若不显示,请配置 HOST, 参考链接 http://blog.sqber.com/articles/url-can-not-access.html

升级 vue router(升级后错误信息变了)

将 vue router 升级到 3.3.1 版本

  1. npm install vue-router@3.3.1

升级之后,错误信息具体了, Redirected from xxx via a navigation guard

vue router Error: Redirected from xxx via a navigation guard

如下图:

图片来源 Github,若不显示,请配置 HOST, 参考链接 http://blog.sqber.com/articles/url-can-not-access.html

网络上的方案均 失败 了,比如

  1. this.$router.push({ path: this.redirect || "/" },onComplete => { }, onAbort => { });

或者 catch 异常

  1. this.$router.push({ path: '/welcome' }).catch(()=>{})

分析错误原因

假如你是由登录页跳转到欢迎页。出现错误的原因是又跳转回了登录页。
即:登录页 -> 欢迎页 -> 登录页

查看登录接口,状态是成功的。

根据自己项目的信息定位错误,点击错误提示中的 main.js

图片来源 Github,若不显示,请配置 HOST, 参考链接 http://blog.sqber.com/articles/url-can-not-access.html

我们发现它是 main.js 中的 next(‘/login’) 导致的。按理来说登录成功后,就不该再走 login,也就是说上面的 isLogin 是 false。看来登录成功后,写入 token 失败了。

图片来源 Github,若不显示,请配置 HOST http://blog.sqber.com/articles/url-can-not-access.html

找到自己项目中写入 token 的地方,发现是 if 里面的判断有问题,这样问题的源头就找到了。

图片来源 Github,若不显示,请配置 HOST, 参考链接 http://blog.sqber.com/articles/url-can-not-access.html

总结

出现错误信息的原因是因为 跳转后,又跳转回来了。根据自己项目的实际情况,解决根源即可。

扫码分享
版权说明
作者:SQBER
文章来源:http://www.sqber.com/articles/vue-router-redirect-fail.html
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。