70

ng build我在(为差异加载生成 ES5 包...)时遇到异常

An unhandled exception occured: Call retires were exceeded

使用的版本:

  • 角 CLI:8.3.20
  • 角度:8.2.7
  • 节点:12.12.1

同样在日志中,它被提到

[error] Error: Call retries were exceeded at ChildProcessWorker.initialize
4

9 回答 9

65

2019 年 2 月 10 日更新

这是@angular/cli. 更新版本>= 8.3.22应该可以解决问题:请参阅 #16515 中的此评论

原来的

基本上构建过程内存不足:请参阅相关的 angular-cli 问题#15493#16515

建议的补救措施是:

  • 将节点更新到最新版本,例如12.14.0
  • 增加构建过程 的内存:
    • 在您package.json"build"脚本更改为:node --max_old_space_size=4096 node_modules/@angular/cli/bin/ng build
    • 在这种情况下,内存会增加到4GB
      取决于项目的大小,您可能需要更多

作为一种快速的解决方法,它也可以使用旧版本的angular/cliand build-angular

"devDependencies": {
    "@angular-devkit/build-angular": "0.803.20",
    "@angular/cli": "8.3.20",

如果需要,另一个解决方法是禁用差异加载(即跳过 ES5 包的生成)。然后构建过程将需要更少的内存并且可以工作。

于 2020-01-01T19:41:03.727 回答
40
于 2020-01-04T07:05:39.783 回答
8

利用

node --max_old_space_size=6144 ./node_modules/@angular/cli/bin/ng build
于 2021-04-06T06:20:24.053 回答
3

几天前我遇到了类似的问题。

我使用的是 Node v10,只能通过在 tsconfig.json 中更改为“target”:“es5”来避免生产构建期间的异常。这消除了不希望的差异负载。

但是,在更新到 Node v14 后,我不再遇到异常并且能够再次使用“target”:“es2015”。

于 2021-04-06T11:25:59.490 回答
2

上面提出的解决方法确实对我有用,但现在有一个更优雅的解决方案,针对 Angular9 及更高版本进行了测试。

不再需要手动处理 JS 堆分配(node --max_old_space_size=4096...),我们大多数人对此并不满意。

解决方案只是添加"sideEffects": false到您的 package.json 文件中。

我在这里的官方 Angular GitHub 问题页面上找到了这个很棒的解决方案,它对我来说很顺利。

于 2020-10-07T11:06:36.943 回答
1

我也遇到了同样的问题,通过将 angular/cli 版本更改为 8.3.19,问题已得到解决。

于 2020-01-03T03:09:28.920 回答
0

这仅适用于那些已经将他们的应用程序迁移到 angular 10 并且增加内存也无济于事的人

检查 package.json 中的“typescript”和“@types/node” 检查它们在https://www.npmjs.com/package/@types/node中是否兼容

尝试将@angular-devkit/build-angular 降级到 0.8XX.X 以下

于 2021-05-05T11:53:40.213 回答
-1

对于 react-natives,您会发现这很有帮助。

晚点再谢我

npm  install --save-dev  escape-string-regexp
于 2021-09-01T10:52:15.370 回答
-1

就我而言,我升级了节点的版本。

我正在运行 v10.* 并升级到 v12.20.1 并完成构建。

我使用 Node Version Manager: nvm来切换节点的版本。

于 2021-07-06T14:39:46.227 回答