使用Apollo CLI下载服务端GraphQL Schema遇多实例冲突报错咨询
问题排查与解决方案
你遇到的报错本质是node_modules目录下存在多个不同的graphql包实例,哪怕你顶层声明的服务端、客户端版本一致,第三方依赖的子依赖也可能引入其他版本的graphql。按照以下步骤处理即可:
- 第一步:确认重复的graphql实例
执行对应包管理命令查看所有已安装的graphql版本:- yarn环境执行:
yarn list graphql - npm环境执行:
npm ls graphql
执行后会输出所有依赖graphql的包路径,确认是否存在多个版本号。
- yarn环境执行:
- 第二步:全局强制统一graphql版本
在package.json中添加配置强制所有依赖使用同一个版本的graphql:- yarn环境添加
resolutions字段:
{ "resolutions": { "graphql": "你的项目统一使用的graphql版本号" } }- npm(v8.3及以上版本)环境添加
overrides字段:
配置完成后,删除node_modules目录和对应的锁文件(yarn.lock或package-lock.json),重新执行安装命令安装依赖。{ "overrides": { "graphql": "你的项目统一使用的graphql版本号" } } - yarn环境添加
- 第三步:修正下载脚本语法
你当前使用的脚本参数有误,apollo后面的schema:download是命令不是参数,不需要加前缀--,修正后的脚本为:
重新执行下载命令即可正常拉取schema。"schema:download": "apollo schema:download --endpoint=http://localhost:4000/graphql"
内容的提问来源于stack exchange,提问作者The code painter
相关产品推荐
相关产品推荐

