运行apollo client:codegen提示找不到KnownArgumentNamesRule模块如何解决
问题根因定位
该错误为典型的依赖版本不兼容问题:你全局安装的apollo CLI依赖的@apollo/federation组件需要从graphql包的graphql/validation/rules/路径下导入KnownArgumentNamesRule模块,但你环境中安装的graphql版本与CLI要求的版本不匹配:graphql v15及更早版本的规则类确实存放在该路径下,若环境中安装了v16+版本的graphql,或者apollo CLI安装时依赖的graphql包缺失,就会触发该MODULE_NOT_FOUND报错。
解决方案
方案1:更换维护中的代码生成工具(推荐)
官方早已停止维护apollo npm包,不会再做新版本兼容,建议切换到活跃度更高的@graphql-codegen工具链实现相同的代码生成能力:
- 卸载全局旧版
apolloCLI:npm uninstall -g apollo - 在项目中安装graphql-codegen基础依赖:
npm install -D @graphql-codegen/cli @graphql-codegen/typescript @graphql-codegen/typescript-operations,可根据你的生成目标补充对应插件(如生成React Hooks可追加安装@graphql-codegen/typescript-react-apollo) - 项目根目录新增
codegen.ts配置文件,指定schema地址、GraphQL操作文件路径、产物输出路径后即可使用。
方案2:强制安装兼容版本组合(仅适用于必须使用旧版apollo client:codegen的场景)
- 先卸载当前全局安装的不兼容版本:
npm uninstall -g apollo graphql - 安装经过验证的兼容版本组合:
npm install -g apollo@2.34.0 graphql@15.8.0 - 重新执行
apollo client:codegen命令即可正常运行。
临时验证方案
如果不想修改全局依赖配置,可以在项目本地安装依赖后用npx执行:
- 项目目录下执行安装:
npm install -D apollo@2.34.0 graphql@15.8.0 - 执行代码生成命令:
npx apollo client:codegen [你原有命令的参数]
内容的提问来源于stack exchange,提问作者Minseo Lee
相关产品推荐
相关产品推荐

