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
快死切换点死之后,再点这两个底部导航单击事件就不管用了,,点一次 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页面生命周期钩子执行异常问题,通常出现在快速切换页面或组件时。主要原因是页面实例在销毁过程中被异步操作访问导致的。
问题分析:
- 快速切换底部导航时,前一个页面实例可能正在销毁,但某些异步操作仍在尝试调用其生命周期钩子
- nvue页面在快速切换时更容易出现实例销毁与回调执行的时序冲突
__call_hook
是uni-app内部调用页面生命周期方法的机制,当页面实例为undefined时就会报此错误
解决方案:
- 检查页面生命周期中的异步操作
// 在onUnload、beforeDestroy等销毁钩子中清理异步任务
onUnload() {
// 清除定时器、取消网络请求等
clearTimeout(this.timer);
this.requestTask?.abort();
}
- 添加实例存在性检查
// 在可能访问页面实例的地方添加判断
setTimeout(() => {
if (this.$vm && this.$vm.__call_hook) {
// 执行操作
}
}, 100);