如題:當我們處在a頁面的時候檬姥,繼續(xù)push當前頁面的path的話,chrome控制臺就會報錯(但是不影響正常跳轉(zhuǎn))
解決方案:隱藏當前錯誤抒巢;
解決辦法:在router.js 里面重寫push方法(replace方法同理)
const originalPush = Router.prototype.push;
Router.prototype.push = function (location) {
return originalPush.call(this, location).catch(err => err)
}
分析:其實重點就是后面的.catch(err => err)
用來捕獲err
需要注意的是荞雏,可能會出現(xiàn)另一個問題:vue-router版本如果比較舊或者安裝方式的問題,在本地環(huán)境會出現(xiàn)另一個錯誤(同樣不影響正常跳轉(zhuǎn))
可以看出悦陋,錯誤原因就是 undefined不存在catch
然后打完斷點進去發(fā)現(xiàn),報錯的項目的push方法是這樣的:
不報錯的是這樣的:
可以看出,后者判斷了如果支持promise棍辕,則會返回一個promise,而前者直接調(diào)用了push栖袋;
解決辦法就是使用 npm 升級當前vue-router :
npm update vue-router --save