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

Posted

技术标签:

【中文标题】致命错误:CALL_AND_RETRY_LAST 分配失败 - JavaScript 堆内存不足错误【英文标题】:FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory error 【发布时间】:2018-11-10 06:35:27 【问题描述】:

当我运行 ng build --prod

时出现此错误

92% 的块资产优化

[4136:0155D210] 443646 毫秒:标记扫描 703.5 (770.3) -> 703.6 (759.8) MB, 2162.2 / 0.0 ms(+ 0.0 ms,自打标开始后 0 步, 最大步长 0.0 ms,自标记开始以来的 walltime 2163 ms) last 请求旧空间中的度假村 GC [4136:0155D210] 445794 毫秒: 标记扫描 703.6 (759.8) -> 703.5 (759.8) MB, 2147.8 / 0.0 ms 最后 请求旧空间中的度假村 GC

==== JS 堆栈跟踪 ========================================== =

安全上下文:0369632D 1:创建(这=036856A9) 2: _walk [034841A1 :~764] [pc=1CCAED1F](this=3A11A619 ,visitor=3BCEFD7D ) 3: /* 匿名 */ [034841A1 :~969] [pc=1D3728E3](this=3A11BCBD ) 4: _walk [034841A1 :~968] [pc=1CCC1F3B](this=3A11BCBD

致命错误:CALL_AND_RETRY_LAST 分配失败 - javascript 堆 内存不足 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

【问题讨论】:

查看这个答案:***.com/questions/38558989/node-js-heap-out-of-memory/… 【参考方案1】:

尝试导航到 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

【讨论】:

谢谢!!有效。我没有将我的项目定向到节点模块。可能是其他答案和解决方案会奏效。谢谢大家!! 没问题。如果它解决了您的问题,请接受答案:) 我目前正在使用 nohup npm start &,如何替换为 npm run build-prod?【参考方案2】:

您可能想看看 increase-memory-limit 如何在后台增加堆大小。

通常的方式如下:

node --max-old-space-size=8192 server.js  

如果它以某种方式修改了ng build 命令,您可能需要尝试进一步增加限制。

【讨论】:

【参考方案3】:

我在运行时遇到此错误

npm 测试运行

对于临时的,我们可以增加--max_old_space_size的限制

路径:node_modules/@yarnpkg/index.js

然后搜索 --max_old_space_size 然后增加限制 但这将是一个临时解决方案。

试试这个,因为它似乎是永久的解决方案-- https://***.com/a/57782016/1948482

【讨论】:

【参考方案4】:

我在构建 JS 应用程序时遇到了同样的问题,结果发现节点模块可以消耗的内存是有限的。

只需使用这个 npm 包就可以为我解决它:https://www.npmjs.com/package/increase-memory-limit

【讨论】:

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

以上是关于致命错误:CALL_AND_RETRY_LAST 分配失败 - JavaScript 堆内存不足错误的主要内容,如果未能解决你的问题,请参考以下文章

npm install - javascript堆内存不足

解决Vue编译和打包时频繁内存溢出情况CALL_AND_RETRY_LAST Allocation failed

vue项目编译时报错:FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory

vue项目编译时报错:FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed - JavaScript heap out of memory

CALL_AND_RETRY_LAST Allocation failed-JavaScript heap out of memory 1:00007FF78650DlBA v8

CALL_AND_RETRY_LAST Allocation failed-JavaScript heap out of memory 1:00007FF78650DlBA v8