记:vue-router报错: Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location

记录一下踩坑过程:

  本来项目好好的,拉完代码,重新安装了node_modules,其它的都没动,然后使用路由 push 的时候就会报这个错。完全不知道为什么

 

 然后找度娘,结果基本上千篇一律都是在 main.js 中添加如下代码

const originalPush = VueRouter.prototype.push;
VueRouter.prototype.push = function push(location) {
    return originalPush.call(this, location).catch(err => err)
}

还有就是说 vue-router版本有问题。我就不明白了,为什么以前都好好的,突然就会出错呢。

然后我看了下 package.json 中的是 3.0.7 也不会有  vue-router 3.1及以上版本 push 报错 的问题。

然后我再看 package-lock.json 中的 vue-router 的版本,结果是 3.4.3。难怪删除 node_modules 再重新安装也会报错。

我丢。。。。。

最后再看 node_modules 里面 vue-router的版本也是 3.4.3 。。。

 

如果package-lock.json 和 package.json 中的版本都是一样的,那就再mode_modules里vue-router的版本,一定要保持一致

 

解决办法:

1. package-lock.json 的 vue-router 一项改成 如下的内容

"vue-router": {
    "version": "3.0.7",
    "resolved": "https://registry.npm.taobao.org/vue-router/download/vue-router-3.0.7.tgz",
    "integrity": "sha1-s2yhB7SsuP9bxP+CRYQFnCP8uHs="
}

2. 重新安装 vue-router 3.0.7的版本。如果实在要安装vue-router 3.1及以上的新版本,在 main.js 中添加那段代码即可

 

posted @ 2020-09-15 17:27  站住,别跑  阅读(4795)  评论(0编辑  收藏  举报