【问题标题】:Error in ionic cordova build android --prodionic cordova build android --prod 中的错误
【发布时间】:2023-03-31 04:52:01
【问题描述】:

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

运行命令时出错:ionic cordova build android --prod

注意: ionic build androidionic run androidionic serve 都可以正常工作。 p>

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

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

这是一个已知问题吗?有什么解决办法吗?

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

附加错误图片:

离子信息:

【问题讨论】:

  • 即使在 --max_old_space_size 之后它也不起作用,那么代码可能存在问题。在安全上下文部分,它表示与 toString() 相关的错误,因此您可能必须检查您尝试对大对象执行 toString() 的代码。这篇文章可能会有所帮助 - github.com/nodejs/node/issues/10137
  • 尝试将内存限制增加到 --max-old-space-size=8192 。
  • @Manish -(谢谢!)我试过了,没用。
  • @Gandhi -(谢谢!)我没有添加任何 toString() 但是是的,我们添加了包含 JSON 对象的大文件(用于翻译多语言应用程序)是否会导致问题?如果是 - 解决方案是什么?
  • @AnkitMaheshwari 您可以尝试将 --max-old-space-size 限制增加到更高的限制并尝试一下。您也可以尝试使用 memwatch - github.com/marcominetti/node-memwatch 之类的库来找出内存泄漏。

标签: android cordova ionic-framework ionic2 ionic3


【解决方案1】:

通过添加 --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

【讨论】:

  • 很高兴您对其进行了调整。已发布我的观点作为答案。如果有帮助请采纳。干杯
  • 你看过这个吗?
  • @Gandhi 我会看看这个并尝试如果事情锻炼。
  • 感谢您的回复。如果有帮助,请采纳答案
  • 关于此的任何更新,因为赏金似乎即将用完?
【解决方案2】:

我的 ionic (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

【讨论】:

  • 我也遇到了同样的问题My ionic (Ionic CLI) : 3.20.0 and @ionic/app-scripts : 3.1.9,然后我尝试了你的答案,但仍然出现错误,我已经安装了angularfire2(5.0.0.-rc.6) 我认为这是导致我的应用程序内存泄漏的原因,我删除了angularfire2,然后我尝试了它,但现在我想使用angularfire2,并且我想在--prod 模式下构建我的应用程序,请在这个@Biranchi 中帮助我
  • @Midhunsai 试试下面的命令,$sudo node --max-old-space-size=8192 /usr/local/bin/ionic cordova build android --prod
  • @Midhunsai:我也有同样的问题,你有什么解决办法/解决方法吗?
  • @Midhunsai,尝试安装节点版本 v6.14.0 并检查它是否有效。
【解决方案3】:

我也遇到了这个错误,我告诉自己增加分配的内存是一种解决方法,因为在后台肯定出了问题。

如果您使用的是 Firebase,事实证明它是罪魁祸首。

我将它从“^4.12.1”更改为“4.6.1”(没有插入符号)并运行npm install 将其降级为上述前版本。

在那之后,我能够运行ionic cordova build android --prod,而不会遇到可怕的“堆内存不足”错误。

显然,4.12.1(可能还有其他版本)存在内存泄漏,因此遇到了问题。

希望这会有所帮助!

【讨论】:

    【解决方案4】:

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

    由于 OP 已经提到该项目涉及巨​​大的 JSON 字符串,理想的解决方法是使用 node-memwatch 等工具跟踪构建过程中的内存消耗并进行修复。可能无法始终将堆大小设置为大约 8GB,并且随着项目的进一步增强,这也必须增加。

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

    更新:您也可以尝试使用最新的 Ionic CLI 版本 3.5.0,它可能会有一些改进

    【讨论】:

      猜你喜欢
      • 2019-10-05
      • 1970-01-01
      • 2019-04-19
      • 2018-05-12
      • 1970-01-01
      • 2018-12-14
      • 1970-01-01
      • 2019-06-27
      • 1970-01-01
      相关资源
      最近更新 更多