执行npm audit fix --force中断后npm install报错,Angular依赖冲突求助
看起来你遇到了典型的跨版本依赖冲突问题,加上中断npm audit fix --force后留下的依赖混乱,咱们一步步来解决:
1. 先修复核心的Angular版本冲突
你的项目里同时混合了Angular 8.1.3(@angular/platform-browser-dynamic)和Angular 9.0.7(@angular/compiler-cli、@angular-devkit/build-angular)的包,这是导致"安装@angular/compiler@8.1.3时需要@angular/compiler@9.0.7"这类矛盾提示的根本原因。
你需要统一Angular的版本,二选一:
选项A:升级所有Angular包到9.0.7
运行以下命令,把所有@angular开头的包统一升级到9.0.7:
npm install @angular/core@9.0.7 @angular/common@9.0.7 @angular/compiler@9.0.7 @angular/platform-browser@9.0.7 @angular/platform-browser-dynamic@9.0.7 @angular/compiler-cli@9.0.7 @angular-devkit/build-angular@9.0.7 --save
选项B:降级所有Angular包到8.1.3
如果不想升级到Angular 9,就把高版本的Angular包降级到8.1.3:
npm install @angular/core@8.1.3 @angular/common@8.1.3 @angular/compiler@8.1.3 @angular/platform-browser@8.1.3 @angular/platform-browser-dynamic@8.1.3 @angular/compiler-cli@8.1.3 @angular-devkit/build-angular@0.801.3 @ngtools/webpack@8.1.3 --save
注意:Angular 8对应的
@angular-devkit/build-angular版本是0.80x.x,必须和Angular版本匹配。
2. 安装缺失的Peer依赖
根据警告信息,你需要手动安装符合版本要求的依赖包:
安装指定版本的TypeScript
Angular 9要求TypeScript版本在>=3.6 <3.8区间,推荐安装这个范围内的稳定版本3.7.5:
npm install typescript@3.7.5 --save-dev
安装符合要求的Jest版本
ts-jest@24.0.2需要Jest版本在>=24 <25区间,安装24.x的最新稳定版即可:
npm install jest@24.9.0 --save-dev
3. 清理依赖缓存并重新安装
完成上面的步骤后,清理npm缓存并重新生成依赖文件,确保所有依赖都正确关联:
npm cache clean --force rm -rf node_modules package-lock.json npm install
4. 安全处理漏洞问题
之前中断npm audit fix --force是非常明智的选择——--force参数可能会强制升级不兼容的包,反而引发更多依赖混乱。现在依赖版本已经统一,再运行正常的audit流程:
npm audit
查看漏洞详情后,如果是可以安全自动修复的,再运行:
npm audit fix
如果有需要手动处理的漏洞,根据audit提示的信息逐个升级对应包到安全版本即可。
内容的提问来源于stack exchange,提问作者LightOne

