发布到微信小游戏后Resources文件夹下脚本引用问题

  • Creator 版本: 2.4.3

  • 目标平台: 微信小游戏开发工具

  • 重现方式:在resoruces文件夹下创建一个ts脚本,脚本中引用resoruces文件夹外部脚本,打包到微信开发者工具报错

  • 首个报错: gamePage.html:436 assets/resources/index.js:
    Error: Cannot find module ‘…/…/Script/A_Button’
    at n (index.js:1)
    at index.js:1
    at Object.window.__require.Helloworld…/…/Script/A_Button (index.js:1)
    at n (index.js:1)
    at t (index.js:1)
    at index.js:1
    at wrapFn (gamePage.html:429)
    at require (VM887 WAGame.js:3)
    at VM887 WAGame.js:3
    at assetsResourcesIndexJs (ccRequire.js? [sm]:3)

  • 之前哪个版本是正常的: 2.4.2

  • 手机型号:

  • 手机浏览器:

  • 编辑器操作系统: win10

  • 重现概率: 100%

错误项目Demo:NewProject.rar (838.5 KB)

确定不是微信开发工具基础调试库版本问题

顶,希望有人可以解决一下,2.4.2正常,到2.4.3就错误

+1 2.4.3 resources目录下的代码,无法引用resources目录以外的代码,会报错诸如

Cannot find module "../../...."

根据文件夹的优先级来讲,是先加载resource文件夹,后面才是main文件夹,如果照你这个demo上的设计实现的话,要想不报错,可根据2.4.2构建出来的 main.js 文件自行修改加载顺序即可。

1赞

为什么低版本2.4.2没问题,2.4.3就有这个问题?

是要两个版本引擎的加载顺序不同吗

看上面我发的截图。。。那个就是加载顺序。。

这个解决方法是每次包后都得重新修改吗

可创建个构建模板,模板里放着你修改好的 main.js :

|--build-templates
      |--wechatgame
            // 用户需要添加修改的文件,如 main.js
            |--main.js

详细可参考文档:
https://docs.cocos.com/creator/manual/zh/publish/custom-project-build-template.html?h=模板

请问这个问题后面会统一修复吗?
还是说按照引擎的设计规范,resources目录下不应该放置代码呢?

不是说不应该放置代码,是根据引擎里面bundle优先级来加载的设计,如果你要引用的话:
1.你放在同一个bundle里;
2.或者设置好相应的优先级加载引用,即在引用之前,该被引用的资源就已经加载完成;

目前是确定就这样设计,根据bundle的优先级来制定加载顺序,如果有问题,需要自行修改加载代码。

1赞

只要把放置代码部分的bundle的优先级设置比resources高就行了是吗

别想其他的了, 老老实实自定义构建模板修改main.js吧。引擎内置这几个包都是最高,而且改不了。

为啥 resources 的优先级 比主包还高呢?
如此说来一个被所有包都引用的代码,例如公共配置,反而应该放到 resources 包下面吗?

因为所有地方都可能用 loadRes, 但是主包的加载是可以延后的,所以会优先保证 resources 的完整性。
至于公共配置的存放取决于你项目本身的设计,通过修改加载顺序不一定要存放在 resources 下。

1赞

该主题在最后一个回复创建后7天后自动关闭。不再允许新的回复。