cocos creator 无法build 成功

1.coocs creator 版本 1.10.1 Mac OSX
2.可以确定情况是这样的,项目中有很多的子游戏,采用代码分包处理,每一个子包大于在30-40 K ,当子包数量到10多个时间build 后面每个子包生成的时间越来越长,前面子包基本上是1,2分钟就生成了,后面的都上半个小时了,然后最后一个一直无法生成,看上去是生成了的,但就是反复的在写同一个子包,一直在循环。然后几个小时过去了,就报如下错误了。也尝试了设置环境变量 max_old_space_size , -optimize_for_size --gc-interval
但都不管用。

开始还以为是最后那个子包有什么问题,但把删除其他子包,只保留时间最长的,但build 一下就出来了,所以不是说
某个子包有什么问题。 按目前的测试结果是子包数量到达10多个时,就无法build 生成功

build 的平台是 Web Mobile .

<— Last few GCs —>

[530:0x7faf1b806600] 2340900 ms: Mark-sweep 2076.7 (2475.0) -> 2076.7 (2475.0) MB, 1323.2 / 0.0 ms allocation failure GC in old space requested
[530:0x7faf1b806600] 2341916 ms: Mark-sweep 2076.7 (2475.0) -> 2076.6 (2422.5) MB, 1015.1 / 0.5 ms last resort
[530:0x7faf1b806600] 2343008 ms: Mark-sweep 2076.6 (2422.5) -> 2076.6 (2401.5) MB, 1091.5 / 0.4 ms last resort

<— JS stacktrace —>

have tried using both --max-old-space-size=8192 & -–nouse-idle-notification arguments but it has not made a difference.

==== JS stack trace =========================================

Security context: 0x28a083cf4821 <String[7]: file://>
2: nextTick [internal/process/next_tick.js:~140] [pc=0x474821b648c](this=0xcf73bbc6fd1 ,callback=0xe2093204c9 <JS Function afterWrite (SharedFunctionInfo 0x314fade6aaf9)>)
3: arguments adaptor frame: 5->1
4: /* anonymous */ [/Applications/CocosCreator.app/Contents/Resources/electron.asar/common/init.js:~12] [pc=0x474814f673f](this=0xcf73bbc6fd1 <JS Global …

[524] Error: Window “worker” crashed: [object Object]
at WebContents.Window.nativeWin.webContents.on.e (/Applications/CocosCreator.app/Contents/Resources/app.asar/editor-framework/lib/main/window.js:1:2853)
at emitTwo (events.js:111:20)
at WebContents.emit (events.js:194:7)
[524] Worker window crashed, reload to restart worker

还有一点就是控制台一直显示如下警告
Warning: Already has sub package …assets/scripts/org/game46, ignore sub package …assets/scripts/org/game46
类似这些subpackage 的Warning 一直在报。

请尝试升级creator版本解决这个问题。

有其他办法吗?我们的小游戏都做到10多个去了,就是11个开始buld 包build 不出来了。

升级到 2.0.9 后build 包秒出,也不报Warning Already has sub package . ,应该是1.10 版本的问题了。

请问 2.x 是怎么解决这个问题的?我们还在用 1.10 ,短期内没法那么快升级 2.x 。

Creator 1.9.3,碰到同样的问题,现在已经阻碍项目更新了,非常致命。求引擎组关注!

问题原因很简单,node的heap内存不足编译js失败,只要增大max_old_space_size即可解决,但麻烦在于无法传参给CocosCreator Helper。

命令行调用Creator时添加 --js-flags="–max_old_space_size=4096" 参数以后,通过ps可以看到,这个参数只被应用在了CocosCreator主进程本身,没有被传给CocosCreator Helper。
官方能否出一个1.9.4,把–js-flags参数传递给Helper?或者在spawn helper时增加max_old_space_size到4G甚至8G,这样即可不升级引擎也解决这个问题。

附ps

 501 75516 75502   0  1:35AM ttys004    3:41.13 /Applications/CocosCreator.app/Contents/MacOS/CocosCreator --js-flags=--max_old_space_size=4096 --path /Users/greg/Documents/Repos/smartpi-cocos --build platform=ios;buildPath=/Users/greg/Documents/Repos/smartpi-cocos/build;debug=false;template=default;sourceMaps=false;
  501 75517 75516   0  1:35AM ttys004    0:00.26 /Applications/CocosCreator_1.9.3.app/Contents/Frameworks/CocosCreator Helper.app/Contents/MacOS/CocosCreator Helper --type=gpu-process --no-sandbox --supports-dual-gpus=true --gpu-driver-bug-workarounds=0,1,10,23,25,36,39,47,53,61,63,64,65,66,68,73,74,76,84,85,86,89,92 --disable-gl-extensions=GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent --gpu-vendor-id=0x1002 --gpu-device-id=0x7340 --gpu-driver-vendor --gpu-driver-version --gpu-driver-date --gpu-secondary-vendor-ids=0x8086 --gpu-secondary-device-ids=0x3e9b --gpu-active-vendor-id=0x8086 --gpu-active-device-id=0x3e9b --service-request-channel-token=F47519E60A6A506EB324F743216E29D9
  501 75829 75516   0  1:39AM ttys004    3:31.71 /Applications/CocosCreator_1.9.3.app/Contents/Frameworks/CocosCreator Helper.app/Contents/MacOS/CocosCreator Helper --type=renderer --js-flags=--expose-gc --no-sandbox --primordial-pipe-token=C94659A8CB744D34D7D37D935922259D --lang=en-US --app-path=/Applications/CocosCreator_1.9.3.app/Contents/Resources/app.asar --node-integration=true --webview-tag=true --no-sandbox --preload=/Applications/CocosCreator_1.9.3.app/Contents/Resources/app.asar/editor-framework/renderer.js --background-color=#333 --enable-pinch --num-raster-threads=4 --enable-zero-copy --enable-gpu-memory-buffer-compositor-resources --enable-main-frame-before-activation --content-image-texture-target=0,0,3553;0,1,3553;0,2,3553;0,3,3553;0,4,3553;0,5,3553;0,6,3553;0,7,3553;0,8,3553;0,9,3553;0,10,34037;0,11,34037;0,12,34037;0,13,3553;0,14,3553;0,15,3553;1,0,3553;1,1,3553;1,2,3553;1,3,3553;1,4,3553;1,5,3553;1,6,3553;1,7,3553;1,8,3553;1,9,3553;1,10,34037;1,11,34037;1,12,34037;1,13,3553;1,14,3553;1,15,3553;2,0,3553;2,1,3553;2,2,3553;2,3,3553;2,4,3553;2,5,3553;2,6,3553;2,7,3553;2,8,3553;2,9,3553;2,10,34037;2,11,34037;2,12,34037;2,13,3553;2,14,3553;2,15,3553;3,0,3553;3,1,3553;3,2,3553;3,3,3553;3,4,3553;3,5,34037;3,6,3553;3,7,3553;3,8,3553;3,9,3553;3,10,3553;3,11,3553;3,12,34037;3,13,3553;3,14,34037;3,15,34037;4,0,3553;4,1,3553;4,2,3553;4,3,3553;4,4,3553;4,5,34037;4,6,3553;4,7,3553;4,8,3553;4,9,3553;4,10,3553;4,11,3553;4,12,34037;4,13,3553;4,14,34037;4,15,34037 --service-request-channel-token=C94659A8CB744D34D7D37D935922259D --renderer-client-id=6

2赞

@gregwym @zzf_2025 同样遇到了问题, CocosCreator 1.10, 编辑器和命令行都提示这个错误, 老项目没法升级, 求救一下.

可以试试在环境变量增加一个:

echo $NODE_OPTIONS="--no-warnings --max-old-space-size=8192"

然后使用命令行直接启动项目:

CocosCreator.exe --js-flags="--max-old-space-size=8192" --path xxxx
CocosCreator.exe --js-flags="--max-old-space-size=8192" --project xxxx

相关文档:
https://www.electronjs.org/zh/docs/latest/api/environment-variables#node_options

这样在之前的版本应该是能够传递进去的。

@itharbors 尝试了下, 没有成功.

从日志中和 PS 看 max-old-space-size 是传递给了 CocosCreator , 但是似乎没有正确传递给 CocosCreator Helper

38319 ttys000    0:47.04 /Applications/CocosCreator.app/Contents/MacOS/CocosCreator --js-flags=--max-old-space-size=8192 --path . --build platform=ios;debug=false;buildPath=/Volumes/xxx/build;template=default;encryptJs=false;md5Cache=true;projectName=temp;md5Cache=false
38321 ttys000    0:00.16 /Applications/CocosCreator.app/Contents/Frameworks/CocosCreator Helper.app/Contents/MacOS/CocosCreator Helper --type=gpu-process --no-sandbox --supports-dual-gpus=true --gpu-driver-bug-workarounds=1,10,23,25,47,63,65,66,68,74,76,84,85,89,92 --disable-gl-extensions=GL_KHR_blend_equation_advanced GL_KHR_blend_equation_advanced_coherent --gpu-vendor-id=0x1002 --gpu-device-id=0x67df --gpu-driver-vendor --gpu-driver-version --gpu-driver-date --gpu-secondary-vendor-ids=0x8086 --gpu-secondary-device-ids=0x5912 --gpu-active-vendor-id=0x1002 --gpu-active-device-id=0x67df --service-request-channel-token=598ADACDA7E69FF41BD8D21A14CA8240
38403 ttys000    1:01.15 /Applications/CocosCreator.app/Contents/Frameworks/CocosCreator Helper.app/Contents/MacOS/CocosCreator Helper --type=renderer --js-flags=--expose-gc --no-sandbox --primordial-pipe-token=A46750C0B314D2F9016FEE4A346A7AC3 --lang=zh-CN --app-path=/Applications/CocosCreator.app/Contents/Resources/app.asar --node-integration=true --webview-tag=true --no-sandbox --preload=/Applications/CocosCreator.app/Contents/Resources/app.asar/editor-framework/renderer.js --background-color=#333 --enable-pinch --num-raster-threads=2 --enable-zero-copy --enable-gpu-memory-buffer-compositor-resources --enable-main-frame-before-activation --content-image-texture-target=0,0,3553;0,1,3553;0,2,3553;0,3,3553;0,4,3553;0,5,3553;0,6,3553;0,7,3553;0,8,3553;0,9,3553;0,10,34037;0,11,34037;0,12,34037;0,13,3553;0,14,3553;0,15,3553;1,0,3553;1,1,3553;1,2,3553;1,3,3553;1,4,3553;1,5,3553;1,6,3553;1,7,3553;1,8,3553;1,9,3553;1,10,34037;1,11,34037;1,12,34037;1,13,3553;1,14,3553;1,15,3553;2,0,3553;2,1,3553;2,2,3553;2,3,3553;2,4,3553;2,5,3553;2,6,3553;2,7,3553;2,8,3553;2,9,3553;2,10,34037;2,11,34037;2,12,34037;2,13,3553;2,14,3553;2,15,3553;3,0,3553;3,1,3553;3,2,3553;3,3,3553;3,4,3553;3,5,34037;3,6,3553;3,7,3553;3,8,3553;3,9,3553;3,10,3553;3,11,3553;3,12,34037;3,13,3553;3,14,34037;3,15,34037;4,0,3553;4,1,3553;4,2,3553;4,3,3553;4,4,3553;4,5,34037;4,6,3553;4,7,3553;4,8,3553;4,9,3553;4,10,3553;4,11,3553;4,12,34037;4,13,3553;4,14,34037;4,15,34037 --service-request-channel-token=A46750C0B314D2F9016FEE4A346A7AC3 --renderer-client-id=6

NODE_OPTIONS 我也在环境变量中正确设置了.

可能是什么原因呢?

@itharbors 我用最新的 3.3.2 创建了一个测试工程试了一下, max-old-space-size 参数是可以传递到 `CocosCreator Helper (Renderer) 进程的, 但是 CocosCreator Helper 进程也没有这个参数

我们当时是通过删减无用的JS代码解决的,没有什么更好办法。

1赞

感谢回复, 如果没有更好办法的话, 确实只能这样做了:sob:

不用选择sourceMap选项,我们去掉这个就可以build了