如何解决Apollo Control Cache相关的TS2717类型声明冲突错误?
错误原因
该TS报错是两个第三方依赖的类型定义冲突导致:apollo-cache-control包和@nestjs/graphql内置依赖的apollo-server-types包,对cacheControl属性分别做了类型声明,且二者声明的类型不匹配。
解决方法
方案1:强制统一依赖版本(推荐)
如果你使用npm v8及以上版本,在package.json中新增overrides字段,指定统一的apollo-server-types版本:{ "overrides": { "apollo-server-types": "^3.8.0" } }如果你使用yarn作为包管理器,在
package.json中新增resolutions字段:{ "resolutions": { "apollo-server-types": "^3.8.0" } }配置完成后删除项目根目录的
node_modules文件夹、package-lock.json或yarn.lock文件,重新执行安装命令npm install或yarn install即可。方案2:跳过第三方库类型检查(应急方案)
在项目的tsconfig.json的compilerOptions配置项中新增如下参数:{ "compilerOptions": { "skipLibCheck": true, "skipDefaultLibCheck": true } }该配置只会忽略node_modules下第三方类型定义文件的校验,不会影响业务代码的正常类型检查,可快速解决编译阻塞问题。
方案3:升级兼容版本
直接将@nestjs/graphql和所有apollo相关依赖升级到官方最新的稳定兼容版本,该类型冲突问题已在后续版本中得到官方修复,升级后可从根源解决问题。
内容的提问来源于stack exchange,提问作者Clint Maruti
相关产品推荐
相关产品推荐

