2017-07-04 149 views
6

致命错误:CALL_AND_RETRY_LAST分配失败 - 运行命令时的JavaScript堆出来的内存错误离子科尔多瓦构建Android --prod

错误:离子科尔多瓦构建Android --prod

注:ionic build android,离子运行android离子服务一切正常。

我读过很多话题,说一旦项目变大,就停止工作。

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

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

请查看更多详细信息:https://youtu.be/oCN7iSt8rzg

附错误图片:

enter image description here

离子信息:

enter image description here

+0

--max_old_space_size即使它不工作,那么它可能是可能的问题与代码。在安全上下文部分,它说与toString()相关的错误因此,您可能需要检查您正在尝试对大对象执行toString()的代码。这篇文章应该可以帮助 - https://github.com/nodejs/node/issues/10137 – Gandhi

+0

尝试增加内存限制到--max-old-space-size = 8192。 –

+0

@Manish - (谢谢!)我试过了,没有工作。 –

回答

6

通过添加--max_old_space_size修改我的ionic.cmd文件在C:\ Users \ AppData \ Roaming \ npm中解决。我将我的地雷设置为。

@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

+0

很高兴您对它进行了调整。已发布我的观点作为答案。请接受它是否有帮助。欢呼 – Gandhi

+0

你看过这个吗? – Gandhi

+0

@甘地我会看看这个,并尝试如果事情锻炼。 –

0

即使问题是由OP解决,这是一个临时的解决方法。实际问题与项目中涉及的字符串操作有关。

由于OP已经提到该项目涉及巨​​大尺寸的JSON字符串,所以理想的修补程序将使用node-memwatch之类的工具在构建期间追踪内存消耗并修复相同的问题。设置大约8GB的堆大小可能一直不可能,并且随着项目的进一步增强,这个数量必须增加。

同样根据这个link,最新的webpack版本将有望缓解其中一些问题。

UPDATE:你也可以尝试使用最新的离子CLI版本3.5.0可能有一些改进