遇到问题

在升级了Vue-Router版本到到3.1.0及以上之后,多次点击同一个路由控制台会报Uncaught(in promise)的问题

router in promise.png


解决方式

router/index.js文件中添加一段代码即可:

    // 解决重复点击路由报错的BUG
    const originalPush = VueRouter.prototype.push
    VueRouter.prototype.push = function push(location) {
      return originalPush.call(this, location).catch((err) => err)
    }

原因

vue-router的版本更新日志

v3.1.0版本里面新增功能:push和replace方法会返回一个promise, 你可能在控制台看到未捕获的异常

router in promise reason.png