问题描述
[问题描述:尽可能简洁清晰地把问题描述清楚]
vue3+ts开发的项目打成分包并入旧项目报TypeError: t.$callHook is not a function 错误
复现步骤
[复现问题的步骤]
1、通过 vue create -p ./uni-preset-vue v2 创建vue2的项目(网络问题,直接在github下载并通过这种本地方式创建的项目),并执行 yarn;yarn build:mp-weixin; 编译好小程序包;
2、下载 https://github.com/dcloudio/uni-preset-vue vite-ts 分支的模板,执行 yarn 安装好依赖,再执行 yarn build:mp-weixin --subpackage=car3 打成分包;
3、将上一步生成的 car3 文件夹移动到步骤1生成的 /dist/build/mp-weixin/ (以下简称v2),并修改v2的app.json 文件,加入分包路由:
"subPackages": [
{
"root": "car3",
"pages": [
"pages/index/index"
]
}
],
4、打开微信小程序开发者工具,导入v2项目,通过添加编译模式直接输入 car3/pages/index/index 路径访问该页面;
[或者可以直接贴源代码]
预期结果
可以正常访问该页面,不会报错
实际结果
页面访问正常,但会报 TypeError: t.$callHook is not a function 的错误
系统信息:
- 发行平台: 微信小程序
- 操作系统:macos 微信开发者工具
- HBuilderX版本 [如使用HBuilderX,则需提供 HBuilderX 版本号]
- uni-app版本,yarn info 返回信息:
- {
name: 'uni-preset-vue',
versions: [],
time: {
created: '2022-02-09T02:50:24.779Z',
'0.0.0': '2022-02-09T02:50:25.020Z',
modified: '2022-03-01T08:25:41.142Z',
unpublished: {
time: '2022-03-01T08:25:41.142Z',
versions: [
'0.0.0'
]
}
},
users: {},
'dist-tags': {},
version: undefined
} - 设备信息 [如 iPhone8 Plus]
补充信息
[可选]
[根据你的分析,出现这个问题的原因可能在哪里?]
猜测是通过 --subpackage=car3 参数打分包时,vue3打包配置出了问题
6条答案
按热度按时间tp5buhyn1#
补充下:打成分包后,并入微信提供的原生小程序项目,也是报一样的错误,所以应该是 --subpackage=car3 这个打分包的参数出bug了,而用 vue2版本的uniapp打的分包就不会报错
pxy2qtax2#
我也遇到这个问题了,请问如何解决
syqv5f0l3#
对比了下两个版本,vue3的版本里onLaunch才执行initBaseInstance才会赋值$callHook = callHook函数,但appShow的时候比onLaunch早,就会报错,vue2的版本是直接就初始化
所以我这里试ok的改动方法是把initBaseInstance函数移到onLaunch外,直接赋值,就ok了,但不知道会不会有什么其他的问题
但是会有个问题initBaseInstance函数会被执行两次,也不知道是不是正确的逻辑
xxls0lw84#
我们也遇到同样问题,有官方出来解答下怎么解决吗
gupuwyp25#
同样的问题,请问官方啥时候解决哦
xyhw6mcr6#
感谢反馈,我看看。
关联 ask
https://ask.dcloud.net.cn/question/174138