如题:当我们处在a页面的时候,继续push当前页面的path的话,chrome控制台就会报错(但是不影响正常跳转)
解决方案:隐藏当前错误;
解决办法:在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
需要注意的是,可能会出现另一个问题:vue-router版本如果比较旧或者安装方式的问题,在本地环境会出现另一个错误(同样不影响正常跳转)
可以看出,错误原因就是 undefined不存在catch
然后打完断点进去发现,报错的项目的push方法是这样的:
不报错的是这样的:
可以看出,后者判断了如果支持promise,则会返回一个promise,而前者直接调用了push;
解决办法就是使用 npm 升级当前vue-router :
npm update vue-router --save