ng 构建时调用重试超出异常

Call retries were exceeded exception while ng build

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

An unhandled exception occured: Call retires were exceeded

使用的版本:

日志中也提到了

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

2019 年 2 月 10 日更新

这是 @angular/cli 的问题。将版本更新到 >= 8.3.22 应该可以解决问题:see this comment in #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/clibuild-angular

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

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

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

对我来说,编辑 tsconfig.json 解决了我的问题。

There was a change in @angular-devkit/build-angular which updated the differential loading. To fix this in your Ionic project, change the target value from “es2015” to “es5” in your tsconfig.json

更多详情:- https://forum.ionicframework.com/t/ionic-cordova-build-get-stuck-at-generating-es5-bundles-for-differential-loading/180202/4

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

无需再手动处理 JS 堆分配(node --max_old_space_size=4096...),这是我们大多数人都感到不舒服的。

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

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

使用

node --max_old_space_size=6144 ./node_modules/@angular/cli/bin/ng build

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

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

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

这仅适用于已将其应用迁移到 angular10 的用户 增加内存也无济于事

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

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

在我的例子中,我升级了节点的版本。

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

我使用节点版本管理器:nvm 用于切换节点版本。

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

npm  install --save-dev  escape-string-regexp

我真的尝试了好几天(多次!)来解决这个问题(没有增加服务器上允许的 RAM 内存,因为我已经达到允许的最大值(共享主机))。没有任何效果,除了 -

--loglevel verbose

我用它来查看导致问题的原因。但是在 real-time 中显示完整日志似乎需要大量内存。从我的命令中删除它后,一切都会从第一次尝试开始构建。