项目中遇到如下报错内容:Uncaught (in promise) Error: Redirected when going from “/xxx” to “/xxx” via a navigation guard.
看了一些资料后,得知在V3.1.0版本里面新增功能:push和replace方法会返回一个promise, 你可能在控制台看到未捕获的异常
原因:
vue-router路由版本更新产生的问题,导致路由跳转失败抛出该错误,但并不影响程序功能
方案一
使用编程式导航跳转时,每次使用,后面都跟上.catch方法,捕获错误信息
this.$router.push(’/location’).catch(err => ())
方案二
全局解决:替换路由的Push和replace方法,放在src/router/index.js中:
import Router from 'vue-router'
const originalPush = Router.prototype.push
Router.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)
}
方案三
更新vue-router到3.3.1版本