在执行 ng build --prod 时,Angular4 出现了堆内存不足的问题。

35

在执行 ng build --prod 时,我遇到了堆内存溢出错误,有什么解决方法吗?但是当参数为 --aot=false 时它可以正常构建。

有任何想法吗?

这里输入图片描述


2
node --max_old_space_size=4096 - yurzui
1
为什么增加内存是一种解决方案?这也发生在 Angular 12 和 13 版本中。 - JRichardsz
5个回答

35

尝试通过以下脚本在package.json中运行构建脚本:

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

参考资料


22

以下是我根据上面的帖子采取的步骤来解决问题,并且对我非常有效。

步骤1

打开 package.json 文件

在 scripts 下添加以下代码:

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

输入图片说明

步骤2

打开终端并执行此代码 "npm run build-prod"

输入图片说明

希望这能帮到您。


3
唯一的改进之处就是使用 ./node_modules/.bin/ng 而不是 ./node_modules/@angular/cli/bin/ng。这样,如果路径随时更改,您就可以使用符号链接。 - Shinigami

22

我的团队也遇到了同样的问题,这是我们解决方法:

在构建项目时,不要使用ng build --prod,而要使用以下命令:

node --max_old_space_size=8192 ./node_modules/@angular/cli/bin/ng build --prod --build-optimizer

在你的package.json文件中添加上述字符串,如下所示,并使用npm run prod构建即可:

    {
  "name": "Deva_Application",
  "version": "1.0.0",
    "scripts": {
    "ng": "ng",
    "start": "ng serve  --proxy-config proxy.conf.json",
    "prod": "node --max_old_space_size=64384  ./node_modules/@angular/cli/bin/ng build --prod --build-optimizer --output-hashing=none",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
...
}

如果项目很大,将--max_old_space_size增加到16384至64384。


在大型项目的情况下,将 --max_old_space_size 增加到 16384 到 64384。 - Deva

9
export NODE_OPTIONS=--max_old_space_size=4096

2
使用这种方法在 CI/CD 过程中会减少问题。 - pcnate
在 Windows 中的提示符中,输入以下命令: set NODE_OPTIONS=--max_old_space_size=4096 - heringer

0
虽然增加堆大小肯定可以解决这个问题,但我还建议您检查一下支持的浏览器,参见'https://github.com/browserslist/browserslist'
当我的应用程序在12GB时停止构建,我研究了其他解决方案,对于我来说,我能够限制到我们实际支持的浏览器,并将堆大小减小到8GB(我怀疑我可以更低,但没有测试)
我的配置现在是
# Browsers that we support
# Take caution when expanding out this list, as builds will require more ram '--max_old_space_size'

last 2 Chrome versions,
last 2 FireFox versions,
last 2 Edge versions,
last 2 Safari versions
last 2 Opera versions

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