Graphql codegen 始终是未知类型
2023-05-29
1627
我正在 SvelteKit 项目中工作,想要使用 gql 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;
gql.ts 文件中的
const documents = [];
为空(我认为它不应该是空的)。
package.json 脚本包括:
"codegen": "graphql-codegen-esm --config codegen.ts"
运行脚本不会引发任何错误。我不知道从哪里开始查找。
2个回答
我遇到了完全相同的问题,但使用的是 React。解决方案如下:
codegen.ts
中有一个
documents
属性。它显示了查询和突变的路径。如果 Codegen 找不到您的查询和突变文件,它不会抛出任何错误(不幸的是)。它只是默默地生成空类型,而您花时间试图弄清楚为什么类型是“未知的”。
我的查询和突变在另一个文件夹中,因此 Codegen 找不到它们。我更改了
documents
中的路径,这有帮助。
Black Beard
2023-09-22
我遇到了同样的问题。通过命名查询解决了这个问题。不要将它们保留为匿名
query GetCustomers {
customers {
id
}
}
bazi
2023-10-04