Angular 11生产环境流水线构建报错:发生未处理异常NGCC failed
问题根因
报错是Angular 11.x版本的ngcc(Angular兼容性编译器)和tslib 2.3.0及以上版本存在兼容性冲突导致的,完全符合你描述的场景特征:
- package.json中tslib的版本声明为
^2.0.0,允许安装2.x分支的所有最新版本 - 流水线构建默认会清空历史依赖缓存重装,会自动拉取tslib 2.3.0+的不兼容版本
- 本地环境已安装的是更早的tslib 2.0.x/2.1.x/2.2.x兼容版本,所以本地编译运行无异常
解决办法
将tslib版本锁死在兼容的2.2.x版本即可,任选以下一种操作:
方式一:直接固定依赖版本(推荐)
修改package.json的dependencies字段中tslib的配置:
把原来的"tslib": "^2.0.0",
修改为"tslib": "~2.2.0",
方式二:通过resolutions强制锁版本
如果不想修改原有依赖声明,可在package.json根节点添加resolutions配置:
"resolutions": { "tslib": "2.2.0" }
若使用npm作为包管理器,需要额外在package.json的scripts字段中添加preinstall钩子:"preinstall": "npx npm-force-resolutions"
修改完成后,删除本地node_modules文件夹、package-lock.json(或yarn.lock)文件,重新执行依赖安装测试,确认本地构建正常后推送到流水线即可。
补充验证点
若修改tslib版本后仍有报错,确认流水线使用的Node.js版本符合Angular 11的兼容要求:仅支持10.13.x ~ 14.x版本,不要使用15.x及以上的Node版本。
内容的提问来源于stack exchange,提问作者Danoi25
相关产品推荐
相关产品推荐

