微信小游戏代码分包加载问题

事情是我们项目有个脚本过大,想把它作为分包,但是主包很多地方import了这个脚本,打包成微信小游戏就出问题了,Unable to instantiate chunks:///_virtual/A.ts from chunks:///_virtual/B.ts

想问一下,只要脚本被import了,即使不运行到这里,也会报错吗?那是不是脚本被分出去,主包任何一个脚本都不能import了吗?如果是,怎么处理比较好

说明结构有问题啊,主包为什么会引用(直接引用)子包的东西呢?代码最佳方案应该是分包之间各不引用,分包仅可使用主包的代码(或者公共层有个代码分包)

主要是这个脚本是proto合并编译成的ts文件,非常大,如果一直在主包,那总有一天会超过4M,所以不知道怎么处理

https://store.cocos.com/app/detail/4442
如果自己不能解决这个问题,那么就使用工具,把所有代码(包括引擎的代码)都分包

大佬,有个疑问:
这个工具分出Game包应该就是我们本来要放在主包的代码对吧,那是不是还是会Game包超过4M依然存在问题,毕竟这个工具只是帮我们多出engine的空间

20MB限制,微信小游戏现在是30MB限制,够你用了。另外,3.x应该也不用这个方案,你直接主包变成小游戏分包就可以了吧

你的主包依赖了分包,所以得保证分包先加载了·主包能才能使用,引擎是不会去主动帮你加载依赖包的,得自己主动加载。你可以不把那个proto合并编译成的ts文件单独分包,就放在主包里·构建的时候选择主包作为小游戏分包,只要构建出来的微信项目主包和分包不超过20M就没有问题.如果还是超过了20M的话·建议你使用protobufjs动态加载proto文件·这样就可以把proto作为远程资源放在服务器上·也就不会放在包里了,可以直接减少proto合并编译成的ts文件的大小。

好的谢谢大佬

大佬好思路啊,我等下试试

如果你改为protobufjs动态加载proto文件那估计你项目改动成本会有些高.

但是有个问题·如果你构建的时候既选择了主包压缩类型为小游戏分包又启用了初始场景分包,初始场景挂载的脚本又使用了你的那个proto编译生成的ts文件·那也会造成那个ts文件会放到微信小游戏的主包里了,因为初始场景的包的优先级大于了cocos主包的优先级,所以代码放到了初始场景的包里了·

1赞

好像不行,还是要买上面大佬的插件好像

大佬,我用你的插件,本来engine分包只有5M,然后我加了个子游戏而且配置成远程加载,代码只有一点点,但是engine分包突然变成15M,看代码依赖是start-scene和cocos-js都变大了,可以请教下是咋回事吗

是开了调试模式 :joy:,不知道原来开了调试模式大这么多,打扰了大佬