- 說明:使用 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)
}