記錄一下踩坑過程:
本來項目好好的,拉完代碼,重新安裝了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 中添加那段代碼即可