执行npm run schema:download下载GraphQL Schema报多实例错误如何解决?
解决方案
核心原因
报错的本质是项目node_modules目录中存在多个版本的graphql依赖包,废弃的旧版Apollo CLI和项目其他依赖加载了不同版本的graphql实例,导致类型校验不通过。
解决步骤
方案一:修复现有依赖冲突
- 清理现有依赖文件和缓存
# 删除依赖目录和锁文件 rm -rf node_modules package-lock.json yarn.lock
- 配置统一的graphql版本
打开package.json,根据你使用的包管理工具添加对应配置:
- 如果你使用npm,新增
overrides字段:
{ "name": "my-app", "version": "0.1.0", // 新增下面的配置 "overrides": { "graphql": "你的项目已安装的graphql版本号,可在package.json的dependencies中查看" }, "dependencies": { "graphql": "^16.8.0" // 这里的版本就是你要填到overrides里的版本 }, "scripts": { // 原有脚本不变 } }
- 如果你使用yarn,新增
resolutions字段:
{ "name": "my-app", "version": "0.1.0", // 新增下面的配置 "resolutions": { "graphql": "你的项目已安装的graphql版本号" } }
- 重新安装依赖
# npm用户执行 npm install # yarn用户执行 yarn install
- 重新执行下载命令
npm run schema:download
方案二:替换废弃工具(更推荐)
你使用的apollo CLI已经被官方废弃,完全可以换更轻量无冲突的工具完成schema下载操作:
- 修改
package.json中的schema:download脚本:
"schema:download": "npx get-graphql-schema http://localhost:9000/graphql > ./src/app/graphql-schema.json"
- 直接执行脚本即可完成下载,不需要处理任何依赖冲突。
内容的提问来源于stack exchange,提问作者Deepak Vijayan
相关产品推荐
相关产品推荐

