升级Angular 5至6执行ng update @angular/core时遇对等依赖不兼容问题
解决Angular 5升级到6时的Peer依赖冲突问题
别担心,这种peer依赖冲突在跨版本升级时很常见,咱们一步步来解决,尽量降低风险:
第一步:先升级TypeScript到符合Angular 6要求的版本
Angular 6要求TypeScript版本在>=2.7.2 <2.8之间,你当前的版本是2.6.2,这就是@angular/compiler-cli报错的核心原因。执行以下命令完成升级:
npm install typescript@~2.7.2 --save-dev
第二步:升级@angular/flex-layout到兼容Angular 6的版本
你当前使用的@angular/flex-layout@5.0.0-beta.14是对应Angular 5的版本,它依赖rxjs 5.x,而Angular 6会自动升级rxjs到6.x,两者不兼容才引发了报错。需要把flex-layout升级到适配Angular 6的6.x版本:
npm install @angular/flex-layout@6.0.0-beta.16 --save
(这个版本是当时适配Angular 6的稳定beta版,你也可以根据flex-layout的版本说明选择最新的同大版本兼容包)
第三步:重新运行Angular核心库升级命令
现在依赖版本的匹配问题已经解决,重新执行核心升级命令即可:
ng update @angular/core
额外注意事项(避免后续踩坑)
- RxJS兼容性处理:Angular 6默认使用RxJS 6,如果你项目里有直接使用RxJS 5的语法,大概率会出现运行时错误。可以安装兼容包来过渡:
npm install rxjs-compat@6.2.0 --save - PrimeNG版本检查:你当前的
primeng@5.2.4是Angular 5适配版本,基本不兼容Angular 6。如果升级后PrimeNG组件出现异常,记得同步升级到6.x版本:npm install primeng@6.1.2 --save - 备份与回滚保障:建议操作前先提交当前代码到Git,或者备份
package.json和package-lock.json文件,万一出现意外可以快速回滚到升级前状态。
执行完这些步骤后,应该就能顺利完成Angular 5到6的升级了。
内容的提问来源于stack exchange,提问作者Ahmed Elkoussy
相关产品推荐
相关产品推荐

