升级Angular Material v6到v7时出现peer依赖不兼容问题求解
错误成因
- Angular CLI 的
update命令执行依赖升级时,默认会尝试将关联核心依赖升级到当前源下的最新稳定版本,而非完全遵循本地package.json声明的版本范围。你看到的would install "13.0.2"就是命令解析时默认匹配到的@angular/common最新稳定版,没有读取你本地声明的^7.2.16范围。 - 依赖解析优先级的问题:
@angular/material@7的依赖树对@angular/common的版本要求,在解析时优先级高于第三方包@kolkov/angular-editor的peer依赖声明,导致命令优先尝试升级@angular/common到适配material的最高可用版本,忽略了第三方包的版本限制。
解决方案
- 执行升级命令时添加
--force参数,跳过peer依赖校验:
该参数会强制命令按照你本地npx @angular/cli@7 update @angular/material@7 --forcepackage.json已声明的@angular/common版本范围安装适配的material v7版本,不会尝试升级核心包到13.x版本。 - 临时固定核心包版本:将
package.json中@angular/common的版本从^7.2.16修改为固定版本7.2.16,执行升级命令完成后再改回原版本范围即可,可阻止解析工具尝试升级该包。 - 若后续有升级Angular大版本的计划,可先将
@kolkov/angular-editor升级到适配高版本Angular的版本,再执行material升级操作,即可从根源避免peer依赖冲突。
内容的提问来源于stack exchange,提问作者enbma
相关产品推荐
相关产品推荐

