uni-app 报错 TypeError: Cannot read property '__call_hook' of undefined

uni-app 报错 TypeError: Cannot read property ‘__call_hook’ of undefined

开发环境 版本号 项目创建方式
Windows win10 HBuilderX
示例代码:

具体找不到哪句代码出得问题,我APP是使用uniapp编译模式,全站95%nvue页面

操作步骤:

真机调试模式 刚启动app后在渲染完首页后的瞬间我快速多次切换底部导航(比如 首页  切换到 我的 快速多次切换),IDE就会报这个错误,只要报了这个错误,那么我再点底部导航的(首页 和 我的就会不管用,单击事件无效)但是再点底部导航的另外两个是管用的,

预期结果:

不出这种问题

实际结果:

实际出错

bug描述:

IDE报错这个

```javascript
16:00:36.459 [JS Framework] Failed to execute the callback function:  
16:00:36.480 TypeError: Cannot read property '__call_hook' of undefined

更多关于uni-app 报错 TypeError: Cannot read property '__call_hook' of undefined的实战教程也可以访问 https://www.itying.com/category-93-b0.html

19 回复

快死切换点死之后,再点这两个底部导航单击事件就不管用了,,点一次 IDE报一次错,只到下次重启才恢复

更多关于uni-app 报错 TypeError: Cannot read property '__call_hook' of undefined的实战教程也可以访问 https://www.itying.com/category-93-b0.html


也就是启动完刚渲染完启动页后 我快速切换底部导航会出现,要是启动后等个2秒后再点切换,就算切换再快 也不会出现的, 而且 我把首页和 我的 两个页面里代码全部删除然后再测试启动 也会出现这个问题,这问题到底出再哪里啊,,

我已经重新开贴上传了完整的复现代码 和视频复现流程,https://ask.dcloud.net.cn/question/120377

有解决么

回复 3***@qq.com: 用nvue模式解决了

我也是这个问题 老哥现在解决了没?
reportJSException >>>> exception function:WEEX_CALL_JAVASCRIPT, exception:JavaScript execute error!Uncaught TypeError: Cannot read property ‘call_hook’ of undefined 11:04:28.113 [JS Framework] Failed to execute the callback function: 11:04:28.133 TypeError: Cannot read property ‘__call_hook’ of undefined 11:04:28.153 [JS Framework] Failed to execute the callback function: 11:04:28.173 TypeError: Cannot read property ‘call_hook’ of undefined 11:04:28.193 [JS Framework] Failed to execute the callback function: 11:04:28.213 TypeError: Cannot read property ‘call_hook’ of undefined 11:04:28.273 [Number] 555 , undefined at pages/game/index.nvue:647 11:04:28.473 [JS Framework] Failed to execute the callback function: 11:04:28.493 TypeError: Cannot read property ‘__call_hook’ of undefined 11:04:28.593 [JS Framework] Failed to execute the callback function: 11:04:28.613 TypeError: Cannot read property ‘call_hook’ of undefined 11:04:28.713 [JS Framework] Failed to execute the callback function: 11:04:28.733 TypeError: Cannot read property ‘call_hook’ of undefined 11:04:28.813 [JS Framework] Failed to execute the callback function: 11:04:28.834 TypeError: Cannot read property ‘__call_hook’ of undefined 11:04:28.913 [JS Framework] Failed to execute the callback function: 11:04:28.933 TypeError: Cannot read property ‘call_hook’ of undefined 11:04:29.013 [JS Framework] Failed to execute the callback function: 11:04:29.033 TypeError: Cannot read property ‘__call_hook’ of undefined 11:04:29.133 [JS Framework] Failed to execute the callback function: 11:04:29.153 TypeError: Cannot read property ‘__call_hook’ of undefined

解决了吗? 兄弟。。

老哥,解决了吗???

纯nvue模式不会出现这个问题,,可能是加载了webview那一套 导致了v8引擎加载的慢了0.几毫秒导致

解决了没

我也有同样的问题,一步步排查,发现是引入js文件的问题,题主可能也是该页面的js文件引入的问题

官方得demo点得快也能点死

这个问题官方能优化一下吗

这个问题怎样解决呀 我也出现呀

莫得救咯

官方不给解决方案么

这是一个典型的uni-app页面生命周期钩子执行异常问题,通常出现在快速切换页面或组件时。主要原因是页面实例在销毁过程中被异步操作访问导致的。

问题分析:

  1. 快速切换底部导航时,前一个页面实例可能正在销毁,但某些异步操作仍在尝试调用其生命周期钩子
  2. nvue页面在快速切换时更容易出现实例销毁与回调执行的时序冲突
  3. __call_hook 是uni-app内部调用页面生命周期方法的机制,当页面实例为undefined时就会报此错误

解决方案:

  1. 检查页面生命周期中的异步操作
// 在onUnload、beforeDestroy等销毁钩子中清理异步任务
onUnload() {
  // 清除定时器、取消网络请求等
  clearTimeout(this.timer);
  this.requestTask?.abort();
}
  1. 添加实例存在性检查
// 在可能访问页面实例的地方添加判断
setTimeout(() => {
  if (this.$vm && this.$vm.__call_hook) {
    // 执行操作
  }
}, 100);
回到顶部