- 说明:使用 Vue 的router.replace/push,若跳转到当前路由,控制台会报错如下:NavigationDuplicated: Avoided redundant navigation to current location
- 原因:Vue-router在3.1之后把$router.push()方法改为了Promise。所以假如没有回调函数,错误信息就会交给全局的路由错误处理,因此就会报上述的错误。
- 解决:在router中添加如下代码
// 防止跳转到相同路由下的报错(push同理)
const originalReplace = VueRouter.prototype.replace
VueRouter.prototype.replace = function replace(location) {return originalReplace.call(this, location).catch(err => err)
}