You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 8迁移至Angular 9后执行ng build --prod遇budgets超限错误

Angular 9迁移后budgets超限问题解析

核心原因

不是编译内存使用方式变化,而是Angular 9默认启用了差异加载(Differential Loading),导致构建产物的统计逻辑和Angular 8不同:

  • Angular 8中差异加载需手动开启,而Angular 9开始默认生成ES2015和ES5两个版本的初始包,以适配不同浏览器。
  • 原有budgets配置的initial类型,在Angular 9中会分别对ES2015和ES5的初始包进行大小校验,两个包的体积均远超你设置的2MB警告、5MB错误阈值,因此触发了超限提示。

报错信息对应

你遇到的警告和错误明确指向两个版本的初始包超限:

WARNING in budgets: Exceeded maximum budget for initial-es2015. Budget 2 MB was not met by 13.8 MB with a total of 15.8 MB.
WARNING in budgets: Exceeded maximum budget for initial-es5. Budget 2 MB was not met by 15.6 MB with a total of 17.6 MB.
ERROR in budgets: Exceeded maximum budget for initial-es2015. Budget 5 MB was not met by 10.8 MB with a total of 15.8 MB.
ERROR in budgets: Exceeded maximum budget for initial-es5. Budget 5 MB was not met by 12.6 MB with a total of 17.6 MB.

解决方案

1. 临时调整budgets阈值(已验证有效)

修改angular.json中的budgets配置,提高对应阈值以适配双版本包的体积:

"budgets": [
  {
    "type": "initial",
    "maximumWarning": "12mb",
    "maximumError": "20mb"
  }
]

调整后执行ng build --prod即可正常完成构建。

2. 长期优化方案(推荐)

如果希望保持严格的budgets限制,可通过以下方式压缩包体积:

  • 确认摇树优化开启:在angular.json的生产构建配置中,确保optimization、buildOptimizer、treeShaking均设为true
  • 分析包体积:执行ng build --prod --stats-json生成统计文件,用webpack-bundle-analyzer工具定位体积过大的依赖或未使用的代码
  • 启用模块懒加载:将非核心业务模块改为懒加载,降低初始包体积
  • 按需引入依赖:对大型第三方库采用按需引入的方式,避免打包完整库

内容的提问来源于stack exchange,提问作者Nicolas Cozzo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 05:00:11