致命错误:CALL_AND_RETRY_LAST分配失败 - JavaScript堆内存不足
运行命令时出错:离子cordova构建android --prod
注意: 离子生成安卓,离子运行安卓和离子投放一切正常。
我已经阅读了很多主题,一旦项目变大,就会停止工作。
它是在问题到来前一天工作的。它停止了工作,因为我们添加了更多文件和JSON,用于多语言的应用程序翻译。
这是一个已知问题吗?有没有解决方案?
请检查更多详情:https://youtu.be/oCN7iSt8rzg
附加错误图片:
离子信息
答案 0 :(得分:7)
通过添加 - max_old_space_size 修改C:\ Users \ AppData \ Roaming \ npm中的 ionic.cmd 文件来解决此问题。我将我设置为 8096 。
@if EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" --max_old_space_size=8096 "%~dp0\node_modules\ionic\bin\ionic" %*
) ELSE (
@SETLOCAL
@set PATHEXT=%PATHEXT:;.JS;=;%
node --max_old_space_size=8096 "%~dp0\node_modules\ionic\bin\ionic" %*
)

祝你好运! 检查实际来源:https://github.com/ionic-team/ionic-cli/issues/1453
答案 1 :(得分:2)
My ionic(离子CLI):3.20.0和@ ionic / app-scripts:3.1.8但仍然出现错误。
我通过更新package.json
中的构建脚本来修复错误 "scripts": {
"clean": "ionic-app-scripts clean",
"build": "node --max-old-space-size=2048 ./node_modules/.bin/ionic-app-scripts build",
"lint": "ionic-app-scripts lint",
"ionic:build": "ionic-app-scripts build",
"ionic:serve": "ionic-app-scripts serve"
},
或
尝试以下命令:
$ sudo node --max-old-space-size = 4096 / usr / local / bin / ionic cordova build android --prod
答案 2 :(得分:1)
我也遇到了这个错误,我告诉自己,增加分配的内存是一种解决方法,因为在后台一定有问题。
如果您使用的是 Firebase ,那么事实证明这是罪魁祸首。
我将其从“ ^ 4.12.1”更改为“ 4.6.1”(不带尖号),然后运行npm install
将其降级为上述版本。
在那之后,我能够运行ionic cordova build android --prod
而不会遇到可怕的“堆满”错误。
显然,4.12.1(可能还有其他)存在内存泄漏,因此会遇到问题。
希望这会有所帮助!
答案 3 :(得分:0)
即使问题由OP解决,这也是一个临时的解决方法。实际问题与项目中涉及的字符串操作有关。
由于OP已经提到该项目涉及大尺寸的JSON字符串,理想的修复方法是使用node-memwatch等工具在构建期间追踪内存消耗并修复相同的内容。设置堆大小大约为8GB可能无法一直存在,并且随着项目的进一步增强,这也必须增加。
同样根据link,最新的webpack版本将有望缓解其中一些问题。
更新:您也可以尝试使用最新的Ionic CLI版本3.5.0,它可能会有一些改进