解决 vue-router 升级导致的 Uncaught (in promise) NavigationDuplicated

1 导致错误原因

路由跳转有两种形式:

  • 声明式<router-link :to="...">
  • 编程式router.push(...)

声明式导航是没有这种问题的,这是因为 vue-router 底层已经处理好了。

而编程式导航连续点击进行路由跳转的时候,就会在控制台抛出 Uncaught (in promise) NavigationDuplicated 错误信息,错误信息如下:

这是因为 vue-router 版本升级到了 v3.1.0 之后,push 和 replace 方法会返回一个 promise,如果没有对错误进行捕获,那么控制台就会输出未捕获异常。

2 解决方法

  1. 使用时对错误进行捕获。
this.$router.push('about').catch(err => { return err })
  1. 使用时给 push 传递相应的成功、失败的回调函数。
this.$router.push({ path: 'about' }, () => {}, () => {})
  1. 降低 vue-router 版本为 3.0。
npm install vue-router@3.0
  1. 重写 push 和 replace 方法,只需要在 router 文件夹下的 index.js 文件里面加入如下代码即可。
import VueRouter from 'vue-router'// 解决 vue-router 升级导致的 Uncaught(in promise)
const originalPush = VueRouter.prototype.push
VueRouter.prototype.push = function push (location) {return originalPush.call(this, location).catch(err => err)
}const originalReplace = VueRouter.prototype.replace
VueRouter.prototype.replace = function replace (location) {return originalReplace.call(this, location).catch(err => err)
}Vue.use(VueRouter)

注意:VueRouter.prototype.push中的VueRouter要与import VueRouter from 'vue-router'中的VueRouter名称一致并且要写在Vue.use(VueRouter)之前。

解决 vue-router 升级导致的 Uncaught (in promise) NavigationDuplicated相关推荐

  1. vue router 报错: Uncaught (in promise) NavigationDuplicated {_name:““NavigationDuplicated“... 的解决方法

    报错 方法一.更换版本 npm i vue-router@3.0 -S 方法二 修改入口文件 //main.js import Router from 'vue-router'const origin ...

  2. 解决Vue报错:Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location

    问题描述:重复点击导航时,控制台出现报错 ,虽然不影响功能使用,但也不能坐视不管. 解决 Vue 重复点击相同路由,出现 Uncaught (in promise) NavigationDuplica ...

  3. Vue的router导航重复-报错:Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to curren

    报错: Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location: &q ...

  4. vue报错 Uncaught (in promise) NavigationDuplicated {_name:““NavigationDuplicated“... 的解决方法

    vue报错 Uncaught (in promise) NavigationDuplicated {_name:""NavigationDuplicated"... 的解 ...

  5. 解决Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location问题

    在Vue路由中遇到Error: Avoided redundant navigation to current location:xxxx:错误,意思是路由重复 在router文件夹下的index.j ...

  6. 解决报错:Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location: “

    报错内容: vue-router.esm.js?68cf:2065 Uncaught (in promise) NavigationDuplicated: Avoided redundant navi ...

  7. 解决路由报错Uncaught (in promise) NavigationDuplicated:

    Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location: " ...

  8. vue报错Uncaught (in promise) NavigationDuplicated:Avoided redundant navigation

    vue-router.esm.js?3423:2065 Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation ...

  9. vue发送请求时遇到Uncaught (in promise) TypeError Cannot read properties of undefined(reading ‘randomExtend

    最近在项目中遇到一个前端问题Uncaught (in promise) TypeError: Cannot read properties of undefined(reading 'randomEx ...

最新文章

  1. [转]安装和使用JD-Eclipse插件
  2. tcpdump的简单选项介绍
  3. 面试必备:30 个 Java 集合面试问题及答案
  4. Struts2的国际化(一)-国际化资源文件的配置及国际化信息的访问
  5. 粤教版管理计算机中的文件教案,最新粤教版初中信息技术第一册教案(全册).docx...
  6. 代码缺乏装饰?使用ts装饰器来装饰你的代码
  7. require.context
  8. unity3d生命周期
  9. Maven学习(三)-----Maven本地资源库
  10. 编译原理c语言递归下降程序,编译原理(递归下降分析程序)
  11. 软件测试周刊(第25期):不要成天到晚地找意义
  12. 手机电视-CMMB系统技术应用浅谈
  13. SQL Server 2005“错误1706。安装程序找不到需要的文件。请检查……”的处理办法
  14. 量化交易2-backtrader导入回测数据
  15. English Songs
  16. c语言流水灯程序 16,16个发光二极管流水灯程序
  17. 主流操作系统的开发语言
  18. 使用SVG路径图制作线追踪特效
  19. 尚学堂Java学习笔记
  20. SQL Server安全(4/11):许可(Permissions)

热门文章

  1. Kylin cuboid算法修改
  2. Linux防火墙开放端口
  3. 怎样清理苹果电脑磁盘空间_Macbook苹果电脑提示磁盘空间不足怎么办【解决方法】...
  4. 5年大厂Java高频面试题及答案整理
  5. 【C#/WPF】TextBlock/TextBox/Label编辑文字的问题
  6. yield关键字用法
  7. 黑鲨3pro手机如何升级鸿蒙5g系统,黑鲨3 Pro升降按键怎么进行设置
  8. webView显示白屏的问题
  9. BuildDownload maven-metadata.xml...打包一直卡在这里
  10. Linux文件系统:minix文件系统二进制分析3(硬链接与软链接)