角度致命错误:堆限制附近的无效标记压缩分配失败

Moh*_*iri 4 angular

我使用过 Angular 5
我尝试ng build --prod
显示这个错误:
FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory

我已经阅读了这个这个并改变-max_old_space_sizepackage.json但没有构建生产再次显示上述错误。
有什么问题?怎么解决?是package.json的问题吗?

包.json:

{
  "name": "asd",
  "version": "0.6.2",
  "license": "MIT",
  "angular-cli": {},
  "scripts": {
    "build:dev": "./node_modules/.bin/ng build",
    "build:prod": "./node_modules/.bin/ng build --prod --aot=false",
    "build:aot": "./node_modules/.bin/ng build --prod --aot",
    "build:aot2": "node --max_old_space_size=4096 ./node_modules/.bin/ng build --prod --aot",
    "build": "npm run build:dev",
    "clean:dist": "npm run rimraf -- dist",
    "clean:install": "npm set progress=false && npm install",
    "clean:start": "npm start",
    "clean": "npm cache clean && npm run rimraf -- node_modules doc coverage dist",
    "e2e:live": "npm run e2e -- --elementExplorer",
    "e2e": "npm run protractor",
    "lint": "npm run tslint \"src/**/*.ts\"",
    "prebuild:dev": "npm run clean:dist",
    "prebuild:prod": "npm run clean:dist",
    "preclean:install": "npm run clean",
    "preclean:start": "npm run clean",
    "protractor": "protractor",
    "rimraf": "rimraf",
    "server:dev": "./node_modules/.bin/ng serve",
    "serve": "npm run server:dev",
    "start": "npm run server:dev",
    "test": "./node_modules/.bin/ng test",
    "tslint": "tslint",
    "typedoc": "typedoc",
    "ng": "ng",
    "pree2e": "webdriver-manager update --standalone false --gecko false"
  },
  "private": true,
  ....
}
Run Code Online (Sandbox Code Playgroud)

小智 21

此时升级 Angular 不会解决问题(但将来可能会)。我的 Angular 7 和 8 项目也在我的 Windows 机器上得到了它。

看起来您可能需要更新 package.json 中的内存增加。这是一个似乎已经为很多人解决了这个问题的链接,我认为您必须在节点模块中指定 Angular CLI 的路径。

代替

node --max_old_space_size=4096 ./node_modules/.bin/ng build --prod --aot
Run Code Online (Sandbox Code Playgroud)

尝试

node --max_old_space_size=4096 node_modules/@angular/cli/bin/ng build --prod --aot
Run Code Online (Sandbox Code Playgroud)

解决方案中的这条路径在Angular 4 中看起来是正确的。


小智 5

在 cmd 提示符中运行以下命令:

node --max_old_space_size=8192 node_modules/@angular/cli/bin/ng build --prod
Run Code Online (Sandbox Code Playgroud)

我相信这会解决你的问题。


小智 5

第一种方式:

运行为:

node --max_old_space_size=8048 ./node_modules/@angular/cli/bin/ng serve
Run Code Online (Sandbox Code Playgroud)

其中 8048 是新的内存限制(以兆字节为单位)(默认情况下约为 1500)。或者将命令添加到 package.json 文件中:

"build-serve": "node --max_old_space_size=8048 ./node_modules/@angular/cli/bin/ng serve"
Run Code Online (Sandbox Code Playgroud)

并作为 npm run build-serve 运行

或者另一种方式:适用于 Windows 的快速有效的解决方案

打开 C:\Users\用户名\%AppData%\Roaming\npm

将以下代码复制/粘贴到您的 ng.cmd 中:

@IF EXIST "%~dp0\node.exe" (
    "%~dp0\node.exe" --max_old_space_size=8048 "%~dp0\node_modules\@angular\cli\bin\ng" %* 
) ELSE (
    @SETLOCAL 
    @SET PATHEXT=%PATHEXT:;.JS;=;% 
    node --max_old_space_size=8048 "%~dp0\node_modules\@angular\cli\bin\ng" %* 
)
Run Code Online (Sandbox Code Playgroud)