ng 构建时调用重试超出异常
Call retries were exceeded exception while ng build
我在 ng build
时遇到异常(为差异加载生成 ES5 包...)
An unhandled exception occured: Call retires were exceeded
使用的版本:
- Angular-CLI:
8.3.20
- Angular:
8.2.7
- 节点:
12.12.1
日志中也提到了
[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/cli
和build-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
上面提出的解决方法对我有用,但现在有一个更优雅的解决方案,已针对 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 中显示完整日志似乎需要大量内存。从我的命令中删除它后,一切都会从第一次尝试开始构建。
我在 ng build
时遇到异常(为差异加载生成 ES5 包...)
An unhandled exception occured: Call retires were exceeded
使用的版本:
- Angular-CLI:
8.3.20
- Angular:
8.2.7
- 节点:
12.12.1
日志中也提到了
[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/cli
和build-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
上面提出的解决方法对我有用,但现在有一个更优雅的解决方案,已针对 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 中显示完整日志似乎需要大量内存。从我的命令中删除它后,一切都会从第一次尝试开始构建。