Angular 8升级到9后编译报NGCC failed错误,该如何解决?
问题根因
你当前项目的依赖版本跨大版本不兼容,是报错的核心原因:Angular 9 要求所有官方生态包(@angular-devkit/*、@ngtools/webpack等)的大版本保持一致,你当前的 @angular-devkit/build-angular、@ngtools/webpack 为12.x版本,webpack为5.x版本,和Angular 9.x版本不匹配,调用ngcc(Angular兼容性编译器)时传入了低版本不支持的参数,触发未知参数报错。
解决步骤
- 卸载不兼容的高版本依赖,执行命令:
npm uninstall @angular-devkit/build-angular @ngtools/webpack @angular-devkit/architect @angular-devkit/build-optimizer @angular-devkit/build-webpack webpack - 安装和Angular 9.1.x匹配的对应版本依赖,执行命令:
npm install @angular-devkit/build-angular@0.901.15 @ngtools/webpack@9.1.15 @angular-devkit/architect@0.901.15 @angular-devkit/build-optimizer@0.901.15 @angular-devkit/build-webpack@0.901.15 webpack@4.42.0 --save-dev - 升级@angular/cdk到匹配的9.x版本,避免UI组件兼容问题:
npm install @angular/cdk@9.2.4 --save - 清除旧的依赖缓存和lock文件:
# macOS/Linux 执行 rm -rf node_modules package-lock.json # Windows cmd 执行 rmdir /s /q node_modules del package-lock.json
- 重新安装所有依赖:
npm install - 执行编译校验是否修复:
ng build
可选校验操作
如果仍有ngcc相关报错,可手动执行一次ngcc排查具体问题:npx ngcc
执行完成后再重新编译即可。
内容的提问来源于stack exchange,提问作者TheHunter Shergill
相关产品推荐
相关产品推荐

