JavaScript在角度2中堆内存不足

Posted

技术标签:

【中文标题】JavaScript在角度2中堆内存不足【英文标题】:JavaScript heap out of memory in angular 2 【发布时间】:2018-01-01 12:53:23 【问题描述】:

我正在使用 Angular CLI。请检查我的 CLI 信息

@angular/cli: 1.2.1
node: 6.10.0
os: win32 x64
@angular/animations: 4.1.1
@angular/common: 4.0.0
@angular/compiler: 4.0.0
@angular/compiler-cli: 4.0.0
@angular/core: 4.0.0
@angular/forms: 4.0.0
@angular/http: 4.0.0
@angular/platform-browser: 4.0.0
@angular/platform-browser-dynamic: 4.0.0
@angular/router: 4.1.1

当我使用ng serve --aot 时,我收到以下错误。

最近几次 GC

893427 毫秒:标记扫描 1344.1 (1434.3) -> 1339.9 (1434.3) MB,925.7 / 0.0 ms [分配失败] [请求旧空间中的 GC]。 894468 毫秒:标记扫描 1339.9 (1434.3) -> 1339.9 (1434.3) MB,1040.5 / 0.0 毫秒 [分配失败] [请求旧空间中的 GC]。 895402 毫秒: 标记扫描 1339.9 (1434.3) -> 1339.6 (1418.3) MB, 933.7 / 0.0 ms [最后 度假村 gc]。 896331 毫秒:标记扫描 1339.6 (1418.3) -> 1339.8 (1418.3) MB,928.1 / 0.0 ms [最后的 gc]。

JS 堆栈跟踪

安全上下文:000001AF8A2CFB61 2: /* 匿名 */ [C:\project_folder\node_modules\source-map\lib\source-node.js:100] [pc=0000016E99866533](这=00000346870554E1,映射=000003C18FDC93C9) 3:参数适配器框架:3->1 4:InnerArrayForEach(aka InnerArrayForEach) [native array.j...

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

【问题讨论】:

我认为设置--max_old_space_size 应该可以帮助你也看到这个线程github.com/angular/angular-cli/issues/5618 还有:***.com/questions/41955769/…, ***.com/questions/41517738/… 我都试过了。但我仍然遇到同样的错误。请帮忙!!! 【参考方案1】:

如果 Angular 应用程序的编译大小变得更大,则会出现此问题。请增加可以解决问题的节点内存。 (默认节点ram内存为1600mb,增加到3200左右)

【讨论】:

【参考方案2】:

对于 Angular 7,我增加了 angular.json 文件中为预算分配的最大内存。

"budgets": [
                
                  "type": "initial",
                  "maximumWarning": "2mb",
                  "maximumError": "11mb"
                
]

然后运行以下命令: node --max_old_space_size=10500 'node_modules/@angular/cli/bin/ng' build --prod

在你的情况下,你应该尝试运行这个: node --max_old_space_size=10500 'node_modules/@angular/cli/bin/ng' serve --aot

【讨论】:

【参考方案3】:

我有同样的问题 在我的 tsconfig.json 我有

“包括”:[ “**/*” ],

删除此包含后,ng 构建再次正常

【讨论】:

【参考方案4】:

尝试修改文件并将其内容替换为以下内容:(在文件夹中:node_modules\bin)

修改ng.cmd:

@IF EXIST "%~dp0\node.exe" (
  "%~dp0\node.exe" --max_old_space_size=5048 "%~dp0\..\angular-cli\bin\ng" %*
) ELSE (
  @SETLOCAL
  @SET PATHEXT=%PATHEXT:;.JS;=;%
  node --max_old_space_size=5048 "%~dp0\..\angular-cli\bin\ng" %*
)

修改ngc.cmd:

@IF EXIST "%~dp0\node.exe" (
  "%~dp0\node.exe" --max_old_space_size=5048 "%~dp0\..\@angular\compiler-cli\src\main.js" %*
) ELSE (
  @SETLOCAL
  @SET PATHEXT=%PATHEXT:;.JS;=;%
  node --max_old_space_size=5048 "%~dp0\..\@angular\compiler-cli\src\main.js" %*
)

【讨论】:

它无法正常工作..更改后出现同样的错误 将 package.json 中的所有 ^ 替换为 ~ .Duplicate of ***.com/questions/46071399/…

以上是关于JavaScript在角度2中堆内存不足的主要内容,如果未能解决你的问题,请参考以下文章

在构建角度cli时做错误做什么 - 内存不足问题

Azure 构建上的 JavaScript 堆内存不足

npm install - javascript堆内存不足

更新 mongodb 时 JavaScript 堆内存不足

进程内存不足时删除大型Javascript对象

JavaScript 内存不足错误:超出 UDF 线程内存限制-Snowflake