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

6
当我运行 ng build --prod 时,出现以下错误:

92% chunk asset optimization <--- 最近几次GC --->

[4136:0155D210] 443646 ms: 标记-清除 703.5 (770.3) -> 703.6 (759.8) MB, 2162.2 / 0.0 ms (+ 0.0 ms in 0 steps since start of marking, biggest step 0.0 ms, walltime since start of marking 2163 ms) last resort GC in old space requested [4136:0155D210] 445794 ms: 标记-清除 703.6 (759.8) -> 703.5 (759.8) MB, 2147.8 / 0.0 ms last resort GC in old space requested

<--- JS stacktrace --->

==== JS stack trace =========================================

Security context: 0369632D 1: create(this=036856A9 ) 2: _walk [034841A1 :~764] [pc=1CCAED1F](this=3A11A619 ,visitor=3BCEFD7D ) 3: /* anonymous */ [034841A1 :~969] [pc=1D3728E3](this=3A11BCBD ) 4: _walk [034841A1 :~968] [pc=1CCC1F3B](this=3A11BCBD

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory 1: node_module_register 2: v8::internal::Factory::NewStruct 3: v8::internal::Factory::NewPrototypeInfo

我已经尝试了各种方法,减少了变量的使用并检查了内存泄漏,并在ts文件中进行了非常少的回调。但仍然无法解决问题。我尝试通过使用'npm i increase-memory-limit'来增加节点内存,并将限制增加到2GB
我正在使用Angular 4。节点版本是8.9.4。

请查看此答案:https://dev59.com/zlkT5IYBdhLWcg3wefQn#66914674 - sidverma
4个回答

7
尝试导航到yourproject/node_modules并运行以下命令:
node --max_old_space_size=5048 "%~dp0\..\@angular\cli\bin\ng" build --aot --prod

如果你想让生活变得更轻松,你可以把这个代码插入到你的 package.json 文件中:

"scripts": {
   "build-prod": "node --max_old_space_size=5048 ./node_modules/@angular/cli/bin/ng build --prod"
}

那么现在你需要做的就是运行 npm run build-prod

谢谢!! 它起作用了。我没有将我的项目指向节点模块。可能其他的答案和解决方案也能起作用。 感谢大家!! - user9065878
没问题。如果解决了您的问题,请接受答案 :) - crellee
我目前正在使用 nohup npm start &,我该如何替换它为 npm run build-prod? - Rishabh Agrawal

0

运行过程中我遇到了这个错误

npm test run

暂时我们可以增加 --max_old_space_size 的限制

路径: node_modules/@yarnpkg/index.js

然后搜索 --max_old_space_size 再增加其限制,但这只是个临时解决方法。

尝试使用下面的方式,它看起来是个永久性解决方案-- https://dev59.com/Tanka4cB1Zd3GeqPKzwg#57782016


0
你可能想要查看 increase-memory-limit 如何在幕后增加堆大小。
通常的方式如下:
node --max-old-space-size=8192 server.js  

如果它在某种程度上修改了ng build命令,您可能想尝试增加限制。


-1

我已经使用了增加内存的方法。请阅读我的整个问题。https://www.npmjs.com/package/increase-memory-limit,我访问了链接并安装了它,用它来增加内存。 - user9065878

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接