這是什麼緣由致使的呢?咱們看一下Vue-Router的版本日誌就知道了
vue
緣由:V3.1.0版本里面新增功能:push和replace方法會返回一個promise, 你可能在控制檯看到未捕獲的異常;git
雖然不影響運行,可是看起來不太美觀~github
解決辦法一:在調用方法的時候用catch捕獲異常vue-router
this.$router.replace({ name: 'foo' }).catch(err => {
console.log('all good')
})複製代碼
解決方法二:對Router原型鏈上的push、replace方法進行重寫。這樣就避免每次調用時還要加上捕獲異常方法promise
此方法在vue-router的issues裏面的一位大佬提出的bash
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)
}複製代碼