Angular 11.x执行npm run start报NGCC failed错误如何解决?
修复方案
这个错误是Angular Ivy兼容性编译器(NGCC)在处理核心依赖编译时触发的运行时异常,按以下步骤逐一排查即可解决:
- 彻底清理缓存和损坏的依赖文件
除了删除node_modules外,还要清理锁文件、ngcc编译缓存和npm全局缓存,执行以下命令:
执行完成后重新安装依赖:rm -rf node_modules package-lock.json node_modules/.cache/ngcc npm cache clean --forcenpm install,再尝试启动项目。 - 禁用NGCC多进程编译
Angular 11的NGCC多进程调度逻辑在MacOS + npm 8环境下存在已知适配问题,可通过限制单进程编译修复。修改package.json中的start命令如下:
保存后重新执行"start": "NGCC_PROCESS_COUNT=1 ng serve"npm run start即可。 - 校验Angular依赖版本一致性
打开package.json检查所有@angular/前缀的依赖包,确保版本号完全统一(比如所有包都为11.2.14,不能出现核心包和编译包版本不一致的情况),如果存在版本差异,统一修改为相同的11.x稳定版后重新安装依赖。 - 降级npm到兼容版本
Angular 11官方适配的npm版本为6.x,npm 8.x的依赖解析逻辑和Angular 11存在不兼容问题,执行以下命令降级npm:
降级完成后重复第一步的清理重装流程再启动项目。npm install -g npm@6.14.18 - 手动预执行NGCC编译
如果以上方案都无效,可手动触发NGCC完成依赖预编译,执行命令:
编译完成后再启动项目即可。npx ngcc --properties es2015 browser module main --first-only --create-ivy-entry-points
内容的提问来源于stack exchange,提问作者Zabs
相关产品推荐
相关产品推荐

