hel*_*on3 6 typescript graphql apollo-client graphql-codegen
我使用 Pothos 构建 graphql 架构,并使用 graphql-codegen 生成基于该架构的类型。服务器通过 graphql-yoga 和 nextjs 运行,并且通过 graphiql 界面运行时实际查询工作正常。我一直在尝试进行设置,以便根据本文使用 apollo 客户端正确输入我的 gql 架构使用 apollo 客户端正确输入我的 gql 架构。
模式生成器的片段:
builder.queryType({
fields: t => ({
greetings: t.string({
resolve: (root, args, context) => `Welcome ${context.session?.user?.nickname}`
})
})
})
Run Code Online (Sandbox Code Playgroud)
graphql-codegen 在书面文件中生成以下类型.ts,因此我知道它看到了正确的架构。
export type Query = {
__typename?: 'Query';
greetings: Scalars['String'];
}
Run Code Online (Sandbox Code Playgroud)
但是,当我根据 codegen 文档导入 gql 文件时,它会返回unknown,并且 VSCode 的悬停窗口显示“查询参数未知!请重新生成类型。” 我尝试过重新生成并重新启动 VSCode,但没有任何变化。
import { gql } from '@/gql/gql'
const query = gql('query { greetings }')
Run Code Online (Sandbox Code Playgroud)
documents是的,正如其他人提到的,这是中路径的问题codegen.ts。我在文件中有查询.ts,所以我必须将我的documents全局模式更改为
documents: ["src/**/*.ts?(x)"],
Run Code Online (Sandbox Code Playgroud)
最好将其删除,ignoreNoDocuments: true因为它可能会误导您。
为我解决这个问题的是 codegen.ts 中的文档设置。我在 nextjs 应用程序中,代码位于页面文件夹中,但示例 codegen.ts 使用了 src。更新后
documents: ["src/**/*.tsx"],
Run Code Online (Sandbox Code Playgroud)
到
documents: ["pages/**/*.tsx"],
Run Code Online (Sandbox Code Playgroud)
并重新生成我不再收到错误。
| 归档时间: |
|
| 查看次数: |
2580 次 |
| 最近记录: |