2017-07-04 147 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可能有一些改進