Uncaught (in promise) TypeError: Cannot read property ‘catch‘ of undefined

9 篇文章 0 订阅
2 篇文章 0 订阅

说一个很奇怪的问题,就是大家应该都会碰到的vue-router@3.0.x 以上的版本的重复点击路由的报错。

// 解决ElementUI导航栏中的vue-router在3.0版本以上重复点菜单报错问题
 const originalPush = VueRouter.prototype.push
 VueRouter.prototype.push = function push (location) {
   return originalPush.call(this, location).catch(err => err)
 }

在本地测试环境下加了这串代码确实不会报错了,但是呢,当我项目打包后在生产环境下运行就又报了如下的问题

Uncaught (in promise) TypeError: Cannot read property 'catch' of undefined

用脚指头想都知道这是和我之前添加的 防止重复点击的代码有关

玄乎的地方来了,我尝试性的将上面三行代码注释掉,重新打包测试,就不报错了。。。wtf

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
引用和中提到的错误信息"TypeError: Cannot read properties of undefined (reading 'catch') at VueRouter.push",通常发生在使用VueRouter中的push方法时。这个错误的原因是catch属性未被正确定义或者未被初始化。在这种情况下,当你尝试访问该属性时,会报错提示无法读取undefined的属性。 为解决这个问题,你可以检查以下几个方面: 1. 确保在调用VueRouter的push方法之前,catch属性已经被正确定义和初始化。可以通过在数据中设置一个默认值,或者在创建Vue实例时进行初始化来确保catch属性不为undefined。 2. 检查push方法的调用是否正确。确保你传递了正确的参数,并且目标路由存在于VueRouter的路由配置中。 3. 检查是否有其他地方对catch属性进行了修改或者删除操作,导致其变为undefined。确保在访问catch属性之前,没有对它进行任何修改。 总而言之,要解决这个错误,你需要确保catch属性被正确定义和初始化,并且在调用push方法时传递正确的参数。这样就能避免在访问undefined属性时报错了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [前端解决 “TypeError: Cannot read properties of undefined (reading ‘xxx‘)的多种情况](https://blog.csdn.net/sunwenpinglike/article/details/129690571)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值