Vue——Vue-Router的push和replace方法[Uncaught (in promise) Error]解决方案
问题描述
在升级了Vue-Router版本到到3.1.0及以上之后,页面在跳转路由控制台会报Uncaught (in promise) Error的问题
Vue更新日志
https://github.com/vuejs/vue-router/releases
V3.1.0版本里面新增功能:push和replace方法会返回一个promise, 你可能在控制台看到未捕获的异常
问题分析
解释:没有捕获异常。
解决方案
方法一: 检查代码
1、首先检查router.js中的路由path和name是否有误
2、查看main.js中的路由beforeEach导航守卫的路由跳转是否写错。
方法二:回退版本
在项目目录下运行
npm i vue-router@3.0 -S
将vue-router改为3.0版本即可;
方法三:捕获异常
1、在调用方法的时候用catch捕获异常
this.$router.replace({ name: 'foo' }).catch(err => {console.log('all good')
})
2、对Router原型链上的push、replace方法进行重写,这样就不用每次调用方法都要加上catch。
这个方法是vue-router的issues里面的一位大佬解决的
// 解决Vue-Router升级导致的Uncaught(in promise) navigation guard问题
const originalPush = VueRouter.prototype.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方法同上
// 解决Vue-Router升级导致的Uncaught(in promise) navigation guard问题
const originalReplace = VueRouter.prototype.replace
VueRouter.prototype.replace = function replace (location, onResolve, onReject) {if (onResolve || onReject) return originalReplace.call(this, location, onResolve, onReject)return originalPush.call(this, location).catch(err => err)
}
参考文章
https://blog.csdn.net/haidong55/article/details/100939076
https://forum.vuejs.org/t/topic/97260
https://www.cnblogs.com/xinheng/p/13019818.html
https://blog.csdn.net/ShIcily/article/details/102668403
https://blog.csdn.net/sunrj_niu/article/details/106902138
https://blog.csdn.net/Jone_hui/article/details/107411530
https://blog.csdn.net/qq_37875903/article/details/107494973
https://segmentfault.com/q/1010000019723749
Vue——Vue-Router的push和replace方法[Uncaught (in promise) Error]解决方案相关推荐
- Vue-Router的push和replace方法[Uncaught (in promise) Error]解决方案
解决报错Uncaught (in promise) Error: Redirected when going from - 对Router原型链上的push.replace方法进行重写,这样就不用每次 ...
- Vue的router导航重复-报错:Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to curren
报错: Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation to current location: &q ...
- vue报错vue-router.esm.js?8c4f:2062 Uncaught (in promise) Error: Avoided redundant navigation to curren
在写导航切换时点击会有以下报错 这个报错是是路由中点击路径重复 ,也有可能是安装的vue-router还是之前出错的那个版本,在项目目录下运行 npm i vue-router@3.0 -S 即可. ...
- VUE.js项目中控制台报错: Uncaught (in promise) NavigationDuplicated解决方法
问题愿意:依赖包中vue-router出现问题(猜测为版本问题): 解决方法:在项目目录下运行 npm i vue-router@3.0 -S 这条指令就可以解决了.(更换版本) 或者在main.js ...
- 解决 Vue 重复点击相同路由,出现 Uncaught (in promise) NavigationDuplicated: Avoided redundant navigation 问题
问题描述:重复点击导航时,控制台出现报错 ,虽然不影响功能使用,但也不能视而不见. 解决方案: 方案一:只需在 router 文件夹下,添加如下代码: // src/router/index.js V ...
- 解决vue重复点击路由报错问题:Uncaught (in promise) NavigationDuplicated
直接在路由router文件夹下加上下面代码: import routes from './router'方法一: const originalPush = Router.prototype.push ...
- Uncaught (in promise) Error: Avoided redundant navigation to current location: “/index“. 解决方法
在router.js中加入以下代码就可以 const originalPush = Router.prototype.push Router.prototype.push = function pus ...
- Vue路由跳转-push,replace的区别
1.this.$router.push() 跳转到指定的url,此方法会向history栈添加一个记录,点击后退会返回到上一个页面. 2.this.$router.replace() 跳转到指定的ur ...
- Vue中报错: Uncaught (in promise) Error:Redirected when going from “x“ to “x“ via a navigation guard
项目中遇到如图的错误 是因为router的版本问题 和vue/lic有冲突 解决方法: 删除 node_modules ,到 package.json 中将 vue-router 改为最新稳定版 ,当 ...
最新文章
- 《预训练周刊》第25期:HyperCLOVA:数十亿级韩语生成式预训练变换器、GPT-3在生物医学领域不是好的小样本学习器...
- (十二)Flask 学习 —— 换装
- Ubuntu16.04打开和关闭桌面显示
- 世界三大顶级音响_世界三大汽车赛事是什么?一起来了解一下
- A1078. 逆序对个数
- 用好href的target, base href
- pandas中read_csv的缺失值处理
- 批处理一键创建局域网共享文件夹或文件共享轻松访问Win系统其他电脑的共享文件命令行(纯bat代码)实用便携~
- 【原创】《管理的实践》阅读有感
- css实现图片虚化_css怎么虚化背景图片?css虚化背景图片的方法介绍
- ONLYOFFICE Docs如何与NEXTCLOUD 24连接集成
- CSDN 第一篇随笔
- QT开发之老板无法拒绝的辞职信
- 0.91寸 SSD1306 OLED介绍(四) --- 用上位机验证OLED显示屏
- 汪光焘:中国城市交通问题、对策与理论需求
- 最长等差数列_最长等差子序列的长度
- [开源] OpWeb 框架 --快速高效的实时交互框架(更新至 0.0.4.0)
- java开发用i5还是i7_平面设计用i5还是i7?i5
- 统计自然语言处理梳理四:篇章分析
- centos7根据端口查进程_linux下根据端口号查询对应进程
热门文章
- 变长结构体的临时笔记
- ASP.NET MVC中使用AJAX(XMLHttpRequest、Microsoft AJAX Library......)
- linux rc.d的作用,init.d,rc.d详解 Linux运行时详解
- pythin怎么根据月份获取月初和月末_数据统计丨7月份塑料市场明显回暖,8月份是否延续乐观行情?...
- python 轮廓矩阵_二进制二维矩阵的python轮廓
- 小程序云函数获取用户昵称_小程序云开发云函数进阶
- web前端知识点太多_web前端入门必学的16个知识点,都来看一下吧
- python代码300行程序_Python:游戏:300行代码实现俄罗斯方块
- asp按时间自动递增编号_Java秒杀系统实战系列-分布式唯一ID生成订单编号
- android点击弹出滑动条,IndicatorSeekBar Android自定义SeekBar,滑动时弹出气泡指示器显示进度...