uni-app vue3+ts开发的项目打成分包并入旧项目报TypeError: t.$callHook is not a function 错误

pgky5nke  于 4个月前  发布在  uni-app
关注(0)|答案(6)|浏览(49)

问题描述
[问题描述:尽可能简洁清晰地把问题描述清楚]
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打包配置出了问题

tp5buhyn

tp5buhyn1#

补充下:打成分包后,并入微信提供的原生小程序项目,也是报一样的错误,所以应该是 --subpackage=car3 这个打分包的参数出bug了,而用 vue2版本的uniapp打的分包就不会报错

pxy2qtax

pxy2qtax2#

我也遇到这个问题了,请问如何解决

syqv5f0l

syqv5f0l3#

对比了下两个版本,vue3的版本里onLaunch才执行initBaseInstance才会赋值$callHook = callHook函数,但appShow的时候比onLaunch早,就会报错,vue2的版本是直接就初始化

所以我这里试ok的改动方法是把initBaseInstance函数移到onLaunch外,直接赋值,就ok了,但不知道会不会有什么其他的问题

但是会有个问题initBaseInstance函数会被执行两次,也不知道是不是正确的逻辑

xxls0lw8

xxls0lw84#

我们也遇到同样问题,有官方出来解答下怎么解决吗

gupuwyp2

gupuwyp25#

同样的问题,请问官方啥时候解决哦

相关问题