其他分享
首页 > 其他分享> > 解决 Vue-Router 升级导致的 Uncaught (in promise) 问题

解决 Vue-Router 升级导致的 Uncaught (in promise) 问题

作者:互联网

解决 Vue-Router 升级导致的 Uncaught (in promise) 问题

在 Vue-Router 升级到 3.1.0 之后,push 和 replace 方法会返回一个 promise,你可能在控制台看到未捕获的异常。这只是编程式导航才会出现的问题

此前版本没有报错的原因是 vue-router 没有返回错误信息,所以我们一直无法捕获,并非异常不存在,反正现在就是能够捕获了

既然返回的是一个 promise 的话,那么用 catch 捕获就好了

// 这两个变量是备份,因为可以看出下面是修改了原型上的方法,并没有修改这两个变量
const originalPush = VueRouter.prototype.push
const originalReplace = VueRouter.prototype.replace
//push
VueRouter.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)
}
//replace
VueRouter.prototype.replace = function push(location, onResolve, onReject) {
  if (onResolve || onReject) return originalReplace.call(this, location, onResolve, onReject)
  return originalReplace.call(this, location).catch(err => err)
}

参考链接:http://news.558idc.com/14100.html

标签:Vue,return,replace,onResolve,location,promise,push,Uncaught,onReject
来源: https://www.cnblogs.com/zhumenglong/p/16573217.html