GraphQL Codegen生成函数返回类型为unknown的问题求助
解决GraphQL Codegen生成的graphql函数返回unknown类型问题
问题分析
核心问题是Codegen未根据你的GraphQL操作生成对应强类型,而是返回unknown,通常由配置缺失、文档解析异常或缓存问题导致。
解决方案
1. 完善Codegen配置
修改配置文件,明确添加必要插件并指定模板标签名,确保Codegen能正确识别并生成类型:
const config: CodegenConfig = { schema: "http://localhost:3000/graphql", documents: ["core/shared/gql/**/*.ts"], generates: { "./core/utils/generator/": { preset: "client", plugins: [ "typescript", "typescript-operations" ], presetConfig: { gqlTagName: "graphql" // 必须和你代码中使用的模板标签名一致 } }, }, };
typescript和typescript-operations是生成类型的基础插件,显式声明可避免版本兼容问题。gqlTagName确保Codegen定位到你代码中的graphql模板标签,从而解析内部的GraphQL操作。
2. 验证GraphQL操作语法
检查你的mutation定义是否符合服务端Schema:
- 确认
createsManyAnswer是服务端存在的mutation字段。 - 确认
AnswerInput和返回字段Assessment在Schema中正确定义。 - 操作中的变量、参数语法无拼写错误。
3. 清理缓存并重新生成
运行Codegen时添加--clean参数,清除旧缓存文件,确保生成最新类型:
graphql-codegen --clean
4. 检查依赖版本兼容性
确保@graphql-codegen/cli、@graphql-codegen/client-preset等相关依赖处于兼容的最新版本,版本不匹配可能导致类型生成异常。
完成以上步骤后重新运行Codegen,生成的graphql函数会根据你的createsManyAnswer mutation生成对应强类型,替代原来的unknown。
内容的提问来源于stack exchange,提问作者MiguelG
相关产品推荐
相关产品推荐

