位置: IT常识 - 正文

vue-router控制台异常:Uncaught (in promise) Error: Redirected when going from “/“ to “/foo“(vue router)

编辑:rootadmin
vue-router控制台异常:Uncaught (in promise) Error: Redirected when going from “/“ to “/foo“

推荐整理分享vue-router控制台异常:Uncaught (in promise) Error: Redirected when going from “/“ to “/foo“(vue router),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:vue$router,vue routerview,vue routerlink,vue$router,vue路由控制,vue $route,vue$router,vue$router,内容如对您有帮助,希望把文章链接给更多的朋友!

qian kun微前端在子应用的路由配置中添加了一个全局前置导航守beforeEach,在前置导航守卫中调用next方法时重写了路由的path,结果控制台每次在路由跳转时都会报异常,但是不影响功能。 这里,我们将这个场景从微前端摘出来,如果在前置导航守卫中以下面这种方式使用next方法就会抛异常

router.beforeEach((to, from, next) => { if (to.path !== '/' && !to.path.includes('/target')) { // 在跳转其他路由的时候,覆盖原来的 path 添加前缀 next({ ...to, path: '/target' + to.path, replace: true, }) } else { next(false); }})

先给一下解决这个异常的方法,后文会进一步分析:

1. 降低一下vue-router的版本,使用 < 3.1.0 的版本

vue-router控制台异常:Uncaught (in promise) Error: Redirected when going from “/“ to “/foo“(vue router)

2. 使用catch捕获这个异常,在调用this.$router.push的时候catch或者传入第二个参数

this.$router.push({ path: '/foo',}).catch(err=>{})

3. 如果每次调用push方法都要catch比较麻烦, 可以重写VueRouter原型上的push方法

const originalPush = VueRouter.prototype.pushVueRouter.prototype.push = function (location, onComplete, onAbort) { if (!onComplete && !onAbort && typeof Promise !== 'undefined') { return originalPush.call(this, location, onComplete, onAbort).catch(err => { }) } else { // <router-link>进行路由跳转时,传了一个oncomplate方法 originalPush.call(this, location, onComplete, onAbort) }}

查找一下报异常的原因,网上有说这个异常,是调用push方法的时候抛出的,看一下这个push方法源码,功力不够,一眼看上去并没有发现什么端倪 注:vue-router.js的源码可以在vue-router源码的dist目录中找到

然后看一下控制台的错误,复制一部分的错误信息Redirected when going from在vue-router.js源码中搜索一下 原来这个错误是通过这个方法生成的,继续搜索createNavigationRedirectedError,这个hook会在beforeEach的时候调用,next也就是hook的第三个参数 当next传入的是路径(包含String,或者location路由对象)跳转到一个不同的路径时,就会生成这个异常,然后传递给abort方法,在abort方法中会调用onAbort方法。继续搜索confirmTransition,可以找到transitionTo方法,而$router的push方法会调用transitionTo方法,最终会定位到onAbort方法的真身在push方法中。

如果我们使用this.$router.push跳转路由,不传入onAbort方法,push方法传递给transitionTo方法的onAbort参数是promise中的reject方法。

而promise抛出了错误有没有使用catch进行捕获,就会在控制台中报异常Uncaught (in promise) Error,方法2、3的来源就是捕获promise的异常。 上面我们找到一个 < 3.1.0 版本的vue-router,看一下这个push方法,并没有使用promise,所以切换之前的版本就不会抛出异常了。

总结一下,在查找这个问题的过程中还是走了弯路,如果熟悉Promise的话,在第一步push的代码中就能发现猫腻;并且在vue-router的GitHub中issue和版本说明中也有这个控制台异常的记录,以后还是多看看GitHub能更快找到问题的根源

本文链接地址:https://www.jiuchutong.com/zhishi/287060.html 转载请保留说明!

上一篇:fetch的基本用法、请求参数及响应结果(fetchall的用法)

下一篇:fsma32.exe进程是什么文件 fsma32是什么进程

  • 餐饮企业购入的啤酒不拿消费税吗
  • 计提附加税会计凭证怎么做会计分录
  • 税收的本质是什么意思?
  • 企业所得税优惠政策最新2023小规模纳税人
  • 工业企业取得土地收益
  • 二手房交易需缴纳的费用
  • 计提生产车间工人和车间管理人员工资
  • 会计调转是什么意思
  • 跨月发票红字冲销账务处理
  • 加计扣除是什么意思举例说明农产品
  • 滞留票怎么做账务处理
  • 房企所得税纳税义务发生时间
  • 租赁合同印花税计算
  • 单位投资非盈利性组织怎样核算
  • 客户预付货款会计分录
  • 不够起征点免缴的增值税如何做税务处理?
  • 销售人员的销售总额怎么算
  • 企业自有公租房有房产证吗
  • 新建账套应收账款怎么填客户
  • 资产负债表的编制时间
  • 母公司给子公司担保需要决议吗
  • 增值税专用发票抵扣期限
  • 文具代销
  • 劳务派遣公司发放工资是按照劳务报酬嘛
  • 公司开年会的费用怎么入账
  • 工资个税合理避税
  • 监控系统施工费用包括哪些内容
  • 企业固定资产清单表格
  • 软件企业销售服务符合增值税即征即退吗
  • 库存商品适用于什么账簿
  • 公司生产的产品
  • 进口货物可以退回吗
  • 平板电脑的windows更新有必要吗
  • linux用不了yum
  • linux系统中查看进程的命令
  • 为什么WIN10系统打在画面进不去
  • PHP:pg_fetch_array()的用法_PostgreSQL函数
  • 固定资产内部抵消例题
  • 深度学习——VGG16模型详解
  • Css中的color属性用于设置html元素的背景颜色
  • 日期选择器的()属性表示选择器的粒度
  • 毕业设计烦死了
  • 收到借款时 会计科目怎么做
  • 关于我和鬼变成家人的那件事
  • 培训费属于什么税收分类编码
  • 每股收益率计算公式举例
  • 公司注销剩余的发票怎么作废
  • mybatis调用存储过程详解
  • 科目余额表和资产负债表的期末余额不一样,怎么办
  • 借贷记账法的记账依据是什么
  • 工资与社保的关系图
  • 向非关联企业捐赠现金会计分录
  • 客人在酒店
  • 商品进销差价的作用
  • 同一个法人的两家企业可以进行互相开票吗
  • 个体工商户是否要交税
  • SQL中exists的使用方法
  • 怎样设置禁
  • crowd1登录界面
  • linux top命令详解内存过高查询
  • egui.exe是什么进程
  • MSAPI.DAT,WINDNSAPI.DAT是什么文件
  • win10键盘大小写不能切换了
  • linux ifconfig命令详解
  • 如何解决老电脑卡顿问题
  • windows 10 开始菜单
  • 快速掌握知识的方法
  • html气泡效果
  • unity game optimization
  • css样式表规则由什么组成
  • javascript高级程序设计pdf下载
  • js parsefloat parseint 转换函数
  • android知识点大全
  • django for
  • 税务退休工资
  • 个税完税证明在哪里开具
  • 就业失业登记证网上申请
  • 福建电子税务局登录入口
  • 跪式服务礼仪规范图片
  • 广东税务查询系统
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设