首页 > 解决方案 > 致命错误:CALL_AND_RETRY_LAST 分配失败 - JavaScript 堆内存不足错误

问题描述

运行ng build --prod时出现此错误

92% 块资产优化 <--- 最近几次 GC --->

[4136:0155D210] 443646 ms: Mark-sweep 703.5 (770.3) -> 703.6 (759.8) MB, 2162.2 / 0.0 ms (+ 0.0 ms in 0 step since the start of marking, 最大步长 0.0 ms, walltime 自标记开始 2163 ms) 请求旧空间中的最后手段 GC [4136:0155D210] 445794 ms: 标记扫描 703.6 (759.8) -> 703.5 (759.8) MB, 2147.8 / 0.0 ms 请求旧空间中的最后手段 GC

<--- JS 堆栈跟踪 --->

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

安全上下文: 0369632D 1: create(this=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

我使用角度 4。节点版本是 8.9.4

标签: javascriptnode.jsangularmemory-leaksbuild

解决方案


尝试导航到您的项目 / 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


推荐阅读