位置: 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是什么进程

  • 印花税的应税凭证名称怎么填写
  • 经营性投资是什么
  • 加计抵减附加税怎么做账务处理
  • 上月发票错误退回怎么做账
  • 资产负债表负债总额怎么看
  • 纸质发票如何查看电子发票
  • 酒店怎么合理规划管理
  • 出口抵内销产品应纳税额分录
  • 外包代发工资怎么做账
  • 增值税调整后开具发票
  • 货物正常报损的分录
  • 非居民企业减免的利息是否交增值税
  • 计提城建税计入什么科目
  • 财产保险费发票税率
  • 单边征收
  • 对方发票丢失开什么证明
  • 物业公司收的预存水费不够抵减怎么交税
  • 房屋贷款基准利率表 历年查询
  • 自己种的苗木开发票要什么手续
  • 财务报表申报完可以修改吗
  • 企业注销后注册资金取出需要交税吗
  • 研发费用的会计和税法的不同
  • 主板bios在线升级
  • 实物资产股权投资包括
  • 如何免费获得microsoft
  • url是什么格式的文件怎么打开
  • 分公司不纳入合并
  • 已销售未出库如何结转成本
  • 实收资本账户对应的账户包括
  • 购买支票费用计入
  • 不得抵扣的增值税怎么处理
  • 【类ChatGPT】本地CPU部署中文羊驼大模型LLaMA和Alpaca
  • react框架和vue哪个用的人多
  • php合并数组的方法
  • jquery箭头函数
  • PHP Ajax JavaScript Json获取天气信息实现代码
  • 出售一台设备,收到价款20万
  • 什么情况下专票税率为1
  • 全年累计个税扣除公式
  • 一般纳税人只有进项怎么报税
  • python byte数组
  • 软件信息技术服务业
  • 发票清单用什么纸打印出来
  • 公司广告费用咨询费都应当作为管理费用对还是错
  • 公司举办年会的心得体会
  • 现金流量表季度期初现金余额怎么填
  • 单位食堂用餐免费的账务处理
  • 商场联营扣点缴纳增值税税率
  • 应收账款入账价值包括现金折扣吗
  • 公司注销应付账款要为零吗
  • 以前年度损益调整结转到哪里
  • 小规模纳税人财务报表季报怎么填
  • 企业的源头
  • mysql删除数据库用户
  • windows自带软件有哪些
  • linux 解析
  • 怎么简单快速的拼成魔方六面
  • downloader.exe是什么
  • win10装360安全卫士
  • 在windowsxp的应用程序中,经常有一些菜单选项呈暗灰色
  • win10系统升级后桌面图标变大
  • win7误删我的文档
  • win8.1无线网
  • windows升级后照片不见了
  • redhat linux8
  • unity自动门
  • jQuery实现CheckBox全选、全不选功能
  • 粉碎文件的快捷键
  • python int 转 float
  • 数据库多表连接的几种方式
  • java 同步方法和同步代码块区别
  • python怎么获取命令行参数
  • python中运算符重载方法
  • 进项税额转出应交税费吗
  • 建筑工程资质挂靠合同
  • 资源税的税目有7个,其中不包括
  • 航天金税开票软件服务费可以抵扣税款吗
  • 点击正式申报前怎么操作
  • 税控盘打印机设置参数
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设