NestJS安装Swagger报ERESOLVE依赖冲突错误如何解决
问题原因
报错本质是NestJS生态依赖版本不匹配:
- 当前项目使用的是NestJS 8.x版本(日志显示已安装的
@nestjs/common版本为8.4.7) - npm默认拉取的最新版
@nestjs/swagger@6.0.1强制要求peer依赖为@nestjs/common@^9.0.0
npm 7及以上版本默认会严格校验peer依赖的版本匹配规则,版本跨大代不兼容时就会抛出ERESOLVE unable to resolve dependency tree错误。
正确解决方法
根据你是否要升级项目NestJS大版本二选一即可,全程不需要加--force或--legacy-peer-deps这类带隐患的参数:
方案1:保留现有NestJS 8.x版本(推荐无升级计划的项目使用)
@nestjs/swagger 5.x系列是官方专门适配NestJS 8生态的版本,功能覆盖绝大多数业务场景,直接安装对应大版本即可:
npm install @nestjs/swagger@5 --save-dev
安装完成后正常按文档配置Swagger即可,不会出现运行时兼容问题。
方案2:升级项目到NestJS 9.x版本(有版本升级计划时使用)
先把项目内所有@nestjs/开头的官方依赖统一升级到9.x版本,保证整个NestJS生态依赖版本对齐,之后再执行安装最新版Swagger的命令就不会报错:
npm install @nestjs/swagger@latest --save-dev
注意:非临时测试场景不要用
--force或--legacy-peer-deps参数强制安装,这类操作只是让npm跳过版本校验,实际依赖版本不兼容的问题并没有解决,运行时大概率会出现实例注入失败、方法不存在、接口异常等难以排查的问题。
内容的提问来源于stack exchange,提问作者kowalskijakub
相关产品推荐
相关产品推荐

