Angular 8升级至Angular 9遇依赖兼容问题求助
当前项目基于 Angular 8(@angular/core: ~8.2.14,@angular/cli: ^8.3.29),执行升级命令 ng update @angular/cli@9 @angular/core@9 时遭遇依赖不兼容错误,核心冲突来自 microsoft-adal-angular6 仅支持 Angular 6,具体错误信息如下:
PS > ng update @angular/cli@9 @angular/core@9
已安装的Angular CLI版本低于最新稳定版本。
正在安装临时版本以执行更新。
通过npm安装工具依赖包。
已通过npm安装工具依赖包。
发现名称无效的工作区扩展(defaultProject)。
使用包管理器:npm
收集已安装的依赖项...
找到65个依赖项。
从注册表获取依赖元数据...
包"@angular-devkit/build-webpack"缺少对等依赖"webpack" @ "^4.6.0"。
包"@angular-devkit/build-webpack"缺少对等依赖"webpack-dev-server" @ "^3.1.4"。
包"microsoft-adal-angular6"与"@angular/common"存在不兼容的对等依赖(需要"^6.0.0-rc.0 || ^6.0.0"(扩展),将安装"9.1.13")。
包"microsoft-adal-angular6"与"@angular/core"存在不兼容的对等依赖(需要"^6.0.0-rc.0 || ^6.0.0"(扩展),将安装"9.1.13")。
包"apollo-angular"与"zone.js"存在不兼容的对等依赖(需要"~0.8.20 || ~0.9.0",将安装"0.10.3")。
× 迁移失败:发现不兼容的对等依赖项。
安装依赖项时的对等依赖警告意味着这些依赖项可能无法正常协同工作。
你可以使用'--force'选项忽略不兼容的对等依赖,稍后再处理这些警告。
如需更多详细信息,请查看"C:\Users\Ncozzo.adm\AppData\Local\Temp\ng-6HxWPS\angular-errors.log"。
核心问题分析
microsoft-adal-angular6 是为 Angular 6 开发的专属库,官方未提供对 Angular 9 的支持,这是升级失败的主要原因。此外还有其他依赖存在对等依赖缺失或版本不匹配问题。
分步解决
1. 替换 microsoft-adal-angular6
微软已停止维护ADAL系列库,官方推荐使用MSAL库替代,后者支持Angular 9及以上版本:
- 执行命令卸载旧库:
npm uninstall microsoft-adal-angular6 - 安装适配Angular 9的MSAL版本:
npm install @azure/msal-angular@2 - 迁移认证逻辑:将原ADAL的初始化配置、路由守卫、HTTP拦截器等代码替换为MSAL对应API,确保认证流程正常运行。
2. 修复缺失的对等依赖
针对@angular-devkit/build-webpack缺失的依赖,直接安装指定版本:
npm install webpack@^4.6.0 webpack-dev-server@^3.1.4 --save-dev
3. 解决apollo-angular与zone.js的冲突
升级apollo-angular至支持Angular 9的版本:
npm update apollo-angular
若升级后仍有警告,可添加--force参数强制安装,但需后续验证Apollo相关功能是否正常。
4. 重新执行升级
完成上述依赖调整后,重新运行升级命令:
ng update @angular/cli@9 @angular/core@9
若仍存在非致命警告,可使用--force参数跳过,但升级后必须全面测试项目功能,确保所有依赖协同工作正常。
内容的提问来源于stack exchange,提问作者Nicolas Cozzo

