graphql-codegen无法连接Docker化API服务,Schema加载失败
解决graphql-codegen无法连接Docker化GraphQL API的问题
核心原因及对应解决方案
1. 自签名HTTPS证书验证失败
如果你的Docker化API使用自签名HTTPS证书,浏览器和Postman会自动跳过/允许手动信任证书,但graphql-codegen运行在Node.js环境中,默认会严格验证证书有效性,直接导致连接失败。
解决方法:在codegen.yml中为schema添加fetchOptions,关闭证书验证:
overwrite: true watch: false schema: - "https://localhost:5237/graphql": fetchOptions: agent: rejectUnauthorized: false documents: "**/*.{gql,graphql}" generates: src/graphql/generated/schema.ts: plugins: - "typescript" - "typescript-operations" - "typescript-react-apollo"
或者临时在执行命令时添加环境变量(仅用于测试,不推荐生产环境):
NODE_TLS_REJECT_UNAUTHORIZED=0 graphql-codegen
2. 确认容器端口映射正确性
虽然其他工具能访问,但可再次验证Docker端口映射规则:
docker ps
检查输出的PORTS列,确认存在0.0.0.0:5237->[容器内服务端口]/tcp的映射配置。
3. 切换HTTP协议测试
如果API支持HTTP访问,可临时修改codegen.yml的schema地址为http://localhost:5237/graphql,验证是否是HTTPS证书问题导致的连接失败。
4. 更新graphql-codegen依赖包
尝试升级相关依赖到最新版本,排除版本兼容问题:
yarn upgrade @graphql-codegen/cli @graphql-codegen/typescript @graphql-codegen/typescript-operations @graphql-codegen/typescript-react-apollo
内容的提问来源于stack exchange,提问作者Mdev
相关产品推荐
相关产品推荐

