SvelteKit项目中GraphQL Codegen生成查询类型均为unknown问题
SvelteKit中GraphQL Codegen查询类型全为unknown的排查方案
在SvelteKit项目中使用GraphQL Codegen时,遇到所有查询类型都被标记为unknown的问题,同时生成的gql.ts文件里const documents = [];为空数组,运行codegen脚本未抛出任何错误,但无法定位问题根源。
相关代码示例
查询TS文件
import { graphql } from '$lib/gql/index.js'; export const getPostById = graphql(` query GET_ARTICLE($id: bigint!) { articles_by_pk(id: $id) { content created_at slug updated_at title } } `);
codegen.ts配置文件
import type { CodegenConfig } from '@graphql-codegen/cli'; const config: CodegenConfig = { overwrite: true, schema: "https:...myap", debug: true, verbose:true, watch:true, ignoreNoDocuments: true, emitLegacyCommonJSImports: false, documents:["../src/**/*.svelte", "../src/**/*.ts"], generates: { "src/lib/gql/": { preset: 'client', plugins: [] }, "./graphql.schema.json": { plugins: ["introspection"] } } }; export default config;
package.json脚本
"codegen": "graphql-codegen-esm --config codegen.ts"
排查步骤
- 核对文件路径:确认
codegen.ts的位置与documents配置的路径是否匹配。如果codegen.ts在项目根目录,documents应改为["./src/**/*.svelte", "./src/**/*.ts"];若在子目录(如scripts/),../src才是正确路径,路径错误会导致无法扫描到查询文件,最终生成空的documents数组。 - 验证查询语法:检查GraphQL查询的命名、字段、变量类型是否与后端Schema完全匹配,语法错误会让Codegen忽略该查询。
- 查看详细日志:利用配置的
debug和verbose模式,运行脚本时仔细查看终端输出,是否存在找不到文档文件、Schema加载失败等提示信息。 - 确认依赖完整性:确保已安装
@graphql-codegen/client-preset依赖,preset: 'client'需要该包支持,缺失依赖会导致生成逻辑异常。 - 缩小路径范围:临时将
documents改为具体文件路径(如["../src/lib/queries.ts"]),测试是否能生成非空的documents数组,排查通配符匹配问题。 - 检查文件扩展名:确认查询所在文件的扩展名为
.ts,避免因扩展名不符导致通配符无法匹配到目标文件。
内容的提问来源于stack exchange,提问作者Niro
相关产品推荐
相关产品推荐

