【发布时间】:2022-11-26 14:10:56
【问题描述】:
我试图弄清楚我需要做什么才能让 lib/graphql 识别我所做的突变。
我有一个 issue.tsx(这是一个表格)。它导入:
import {
IssueInput,
useUpdateIssueMutation,
useAllIssuesQuery,
useCreateIssueMutation,
useDeleteIssueMutation,
Issue as IssueGQLType,
} from "lib/graphql"
除了 IssueInput 和 Issue,我的终端出现错误,提示这些查询和变更不是导出成员。
但是,当我尝试在本地主机中加载问题页面时,我收到一条错误消息:
错误 - GraphQLError [Object]:语法错误:预期名称,已找到 .它指向导入 Issue 的行。
我在解析器中进行了所有这些查询和更改,如下所示:
import { Arg, Mutation, Query, Resolver } from "type-graphql" import { Issue } from "./issue.model" import { IssueService } from "./issue.service" import { IssueInput } from "./inputs/create.input" import { Inject, Service } from "typedi" import { UseAuth } from "../shared/middleware/UseAuth" import { Role } from "@generated" @Service() @Resolver(() => Issue) export default class IssueResolver { @Inject(() => IssueService) issueService: IssueService @Query(() => [Issue]) async allIssues() { return await this.issueService.getAllIssues() } @Query(() => [Issue]) async futureRiskIssues() { return await this.issueService.getFutureRiskIssues() } @Query(() => Issue) async issue(@Arg("id") id: string) { return await this.issueService.getIssue(id) } @UseAuth([Role.ADMIN]) @Mutation(() => Issue) async createIssue(@Arg("data") data: IssueInput) { return await this.issueService.createIssue(data) } @UseAuth([Role.ADMIN]) @Mutation(() => Issue) async deleteIssue(@Arg("id") id: string) { return await this.issueService.deleteIssue(id) } @UseAuth([Role.ADMIN]) @Mutation(() => Issue) async updateIssue(@Arg("id") id: string, @Arg("data") data: IssueInput) { return await this.issueService.updateIssue(id, data) } }我还可以从我的 graphql.tsx 文件中看到,这些函数被识别如下:
export type Mutation = { __typename?: 'Mutation'; createIssue: Issue; createUser: User; deleteIssue: Issue; destroyAccount: Scalars['Boolean']; forgotPassword: Scalars['Boolean']; getBulkSignedS3UrlForPut?: Maybe<Array<SignedResponse>>; getSignedS3UrlForPut?: Maybe<SignedResponse>; login: AuthResponse; register: AuthResponse; resetPassword: Scalars['Boolean']; updateIssue: Issue; updateMe: User; }; export type MutationCreateUserArgs = { data: UserCreateInput; }; export type MutationDeleteIssueArgs = { id: Scalars['String']; }; export type MutationUpdateIssueArgs = { data: IssueInput; id: Scalars['String']; };我已经多次运行代码生成器,想不出任何其他方法来强制识别这些突变和查询。任何人都可以找到解决此问题的方法吗?
我的 codegen.yml 有:
schema: http://localhost:5555/graphql documents: - "src/components/**/*.{ts,tsx}" - "src/lib/**/*.{ts,tsx}" - "src/pages/**/*.{ts,tsx}" overwrite: true generates: src/lib/graphql.tsx: config: withMutationFn: false addDocBlocks: false scalars: DateTime: string plugins: - add: content: "/* eslint-disable */" - typescript - typescript-operations - typescript-react-apollo
【问题讨论】:
-
您使用哪种工具来创建 graphql.tsx 文件?似乎生成了,也许是 GraphQL Codegen?
-
是的 - graphql 的代码生成器
-
正如响应所指出的,您似乎没有安装和运行生成挂钩所需的所有插件。您的输出看起来只是在运行“打字稿”插件。检查评论或文档并确保您已正确设置它们。
标签: graphql