uni-app 微信小程序报错 TypeError: t.$callHook is not a function #4781
uni-app 微信小程序报错 TypeError: t.$callHook is not a function #4781
操作步骤:
使用 HBuilder X 最新 alpha 版本和 vue 3 创建一个示例小程序工程
发行打包时选择【发行为混合分包】
然后将打包后对应目录文件拷贝至已有原生微信小程序中
运行小程序,打开uni-app页面
执行 切前台/切后台 操作,观察控制台有报错
预期结果:
控制台无报错
实际结果:
控制台报错,App.onLaunch 等方法未触发
bug描述:
Vue3微信小程序,发行打包时选择【发行为混合分包】,然后将打包后对应目录文件拷贝至已有原生微信小程序中。
项目运行时,在 uni-app 页面中对小程序做 切前台/切后台 操作,控制台有报错:TypeError: t.$callHook is not a function
报错信息在源码的这个位置,vm.$callHook 为 undefined 导致的报错,初步猜测是 initCreateSubpackageApp 的 bug
信息类别 | 内容 |
---|---|
产品分类 | uniapp/小程序/微信 |
PC开发环境 | Mac |
操作系统版本 | macOS 14.1.1 (23B81) |
HBuilderX类型 | 正式 |
HBuilderX版本 | 3.98 |
工具版本号 | 3.0.0-3081220230817001 |
基础库版本 | 3.3.2 |
项目创建方式 | HBuilderX |
更多关于uni-app 微信小程序报错 TypeError: t.$callHook is not a function #4781的实战教程也可以访问 https://www.itying.com/category-93-b0.html
HBuilderX 4.31.2024102414-alpha 已修复。
更多关于uni-app 微信小程序报错 TypeError: t.$callHook is not a function #4781的实战教程也可以访问 https://www.itying.com/category-93-b0.html
4.36版本打包支付宝小程序还是有类似问题:TypeError: Cannot read properties of undefined (reading ‘$callHook’),能麻烦看一下吗
我这边用ve3的就会爆这个错误,用vue2的没问题,项目是uni-hello,没做任何更改javascript:;
已确认bug 感谢反馈, 已加分
bug解决掉了请回复一下,辛苦大大
回复 1***@qq.com: 下个版本修复
临时解决方案:在HBuilderX安装应用的根目录下,找到plugins/uniapp-cli-vite/node_modules/@dcloudio/uni-mp-weixin/dist/uni.mp.esm.js 文件进行替换
tip:
快速找到HBuilderX根目录的方式,帮助–>自述文件。 然后在右键选择 ,在外部资源管理器打开,即可打开HBuilderX路径。
在 uni-app
开发微信小程序时,遇到 TypeError: t.$callHook is not a function
的错误,通常是由于以下几种原因导致的:
1. 生命周期钩子函数未定义或拼写错误
- 确保你在组件或页面中正确定义了生命周期钩子函数,如
onLoad
,onShow
,onReady
等。 - 检查钩子函数的拼写是否正确,大小写是否一致。
export default {
onLoad() {
console.log('Page loaded');
},
onShow() {
console.log('Page shown');
}
}
2. 组件或页面的 methods
中定义了与生命周期同名的方法
- 如果你在
methods
中定义了与生命周期钩子同名的方法,可能会导致冲突。
export default {
methods: {
onLoad() {
// 这会导致冲突,因为 onLoad 是生命周期钩子
console.log('This is a method named onLoad');
}
}
}
3. uni-app
版本问题
- 如果你使用的是较旧版本的
uni-app
,可能会存在一些已知的 Bug。尝试升级到最新版本,看看问题是否解决。
npm install [@dcloudio](/user/dcloudio)/uni-app[@latest](/user/latest)
4. 自定义组件中未正确继承父组件的生命周期
- 如果你在自定义组件中使用了
mixins
或extends
,确保你正确继承了父组件的生命周期钩子。
export default {
mixins: [someMixin],
onLoad() {
console.log('Component loaded');
}
}
5. 插件或第三方库的兼容性问题
- 某些插件或第三方库可能会与
uni-app
的生命周期钩子冲突。尝试禁用或移除最近添加的插件,看看问题是否解决。
6. 微信开发者工具缓存问题
-
有时微信开发者工具的缓存可能会导致一些奇怪的问题。尝试清除缓存并重新编译项目。
-
在微信开发者工具中,点击
工具
->清除缓存
->清除所有缓存
,然后重新编译项目。
7. 代码中使用了 this.$callHook
- 如果你在代码中手动调用了
this.$callHook
,确保它是在正确的上下文中调用的。$callHook
是uni-app
内部的 API,不建议直接使用。
// 不建议直接调用 $callHook
this.$callHook('onLoad');