离子cordova构建android --prod时出错

时间:2017-07-04 05:34:10

标签: android cordova ionic-framework ionic2 ionic3

致命错误:CALL_AND_RETRY_LAST分配失败 - JavaScript堆内存不足

运行命令时出错:离子cordova构建android --prod

注意: 离子生成安卓离子运行安卓离子投放一切正常。

我已经阅读了很多主题,一旦项目变大,就会停止工作。

它是在问题到来前一天工作的。它停止了工作,因为我们添加了更多文件和JSON,用于多语言的应用程序翻译。

这是一个已知问题吗?有没有解决方案?

请检查更多详情:https://youtu.be/oCN7iSt8rzg

附加错误图片:

enter image description here

离子信息

enter image description here

4 个答案:

答案 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,它可能会有一些改进