You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 12:15:09