Ionic/Angular升级Angular12至13时报不兼容对等依赖错误咨询
问题解答
必须先更新和Angular大版本强绑定的配套依赖,不然肯定卡peer依赖报错。你这次升级失败的直接原因就是项目里装的@angular-eslint整套包是12.x版本,只兼容Angular CLI 12.x版本,和要安装的13.x版本要求不匹配,直接阻断了升级流程。
操作步骤
- 第一步先升Angular ESLint相关包
@angular-eslint的版本号和Angular大版本是一一对应的,12.x配Angular12,13.x配Angular13。你现在devDependencies里4个@angular-eslint开头的包全是12.0.0版本,先执行下面的命令把它们升到适配13的版本:
ng update @angular-eslint/schematics@13
这个命令会自动更新所有关联的ESLint包,同步修改对应配置,不用手动改package.json。
其他依赖不用提前升级,提前确认兼容性就行
- 你现在用的Node
v14.17.0符合Angular13的版本要求(要求Node 14.15.0以上的14版本、或者16.x版本),不用换Node。 - 项目里的Capacitor 3.x相关包、Ionic 6.x相关包本身就兼容Angular13,不会卡依赖校验,不用提前调版本。
- 现在装的TypeScript 4.2.x、RxJS 6.6.x,等下跑核心升级命令的时候,Angular CLI会自动把它们升到13兼容的版本范围,不用手动改版本号。
- 唯一要留意的是devDependencies里的protractor:Angular13已经官方停了对protractor的内置支持,不过这不影响核心升级流程,要是升级完跑e2e测试报错,后续再迁到Cypress或者WebdriverIO就行。
- 你现在用的Node
跑核心升级命令
等ESLint包升完,再执行你之前的升级命令就不会报之前的错了:
ng update @angular/core@13 @angular/cli@13
要是过程中弹出非阻断性的peer依赖警告,直接加--force参数跳过就行,等升级跑完再慢慢排查个别包的兼容问题。升级前一定记得把当前代码提交到Git留个备份,出问题能直接回滚。
升级过程中Angular CLI会自动跑版本迁移脚本,大部分语法、配置的破坏性变更都会自动帮你改好,不用手动逐行调整代码。
内容的提问来源于stack exchange,提问作者zeropsi
相关产品推荐
相关产品推荐

