14

我正在使用该@graphql-codegen/cli工具从我的 graphql 服务器生成打字稿类型。这是我的codegen.yml内容:

overwrite: true
schema: "http://localhost:3001/graphql"
documents: "src/**/*.graphql"
generates:
  src/generated/graphql.tsx:
    plugins:
      - "typescript"
      - "typescript-operations"
      - "typescript-react-apollo"
  ./graphql.schema.json:
    plugins:
      - "introspection"

这是package.json我用来生成类型的脚本 ( yarn schema):

"schema": "graphql-codegen --config codegen.yml"

所有这些都是通过执行 cli 向导自动生成的yarn codegen init

但是当我运行时yarn schema,这些是我得到的错误:

在此处输入图像描述

(服务器正在积极运行http://localhost:3001/graphql并公开图形模式。

感谢您的帮助和建议

这是托管在我的服务器中的 .graphql 文件(http://localhost:3001/graphql

# -----------------------------------------------
# !!! THIS FILE WAS GENERATED BY TYPE-GRAPHQL !!!
# !!!   DO NOT MODIFY THIS FILE BY YOURSELF   !!!
# -----------------------------------------------

"""Date custom scalar type"""
scalar Date

type Mutation {
  create_user(user: UserInput!): User!
  create_pofficer(pofficer: POfficerCreateInput!): POfficer!
  create_incident(incident: TIncidentInput!): TIncident!
  add_incident_type(incident_type: TIncidentTypeInput!): TIncidentType!
}

type POfficer {
  _id: ID!
  userid: ID!
  user: User!
}

input POfficerCreateInput {
  name: String!
  surname: String!
  phone: String!
}

type Query {
  users: [User!]!
  pofficers: [POfficer!]!
  incidents: [TIncident!]!
  incident_types: [TIncidentType!]!
}

type TIncident {
  _id: ID!
  createdAt: Date!
  incidenttype_id: ID!
  pofficer_id: ID!
  toffender_id: ID
  toffender_phone: String!
  carnumber: String!
  incident_status: String!
  pofficer: POfficer!
  toffender: User!
  incident_type: TIncidentType!
}

input TIncidentInput {
  incidenttype_id: ID!
  pofficer_id: ID!
  toffender_phone: String!
  carnumber: String!
}

type TIncidentType {
  _id: ID!
  name: String!
  description: String
}

input TIncidentTypeInput {
  name: String!
  description: String
}

type User {
  _id: ID!
  name: String!
  surname: String!
  email: String
  phone: String!
}

input UserInput {
  name: String!
  surname: String!
  email: String!
  phone: String!
}
4

4 回答 4

18

您共享的文件是您的架构(由您的服务器生成),但您似乎没有在其上创建任何查询或突变。这将是 codegen 无法正常工作的原因。

我建议您使用简单的查询创建一个新文件,例如:get-users.query.graphql

query GetUsers {
  user {
    _id
    __typename
    name
    surname
    email
    phone
  }
}

并将其添加到您的src文件夹中(因为您的代码生成配置为.graphql在您的src文件夹中查找所有文件)。然后重新运行codegen,看看它是否运行良好。

之后,您可以使用查询和突变生成各种.graphql文件,并使用 codegen 生成相应的类型。

于 2019-11-18T11:51:49.087 回答
0

就我而言,我将所有查询重构为新文件夹中的单个文件:lib/queries.tsx.

然后我需要做的是将该文件路径添加到codegen.yml

documents:
  - "./lib/queries.tsx"
于 2020-08-24T15:46:42.893 回答
0

请检查您的操作文件的后缀并在此基础上更改此文件,也许您的文件后缀是 .ts 或 .js 并且默认情况下在 codegen.yml 文件中是

documents: "src/**/*.graphql"    

将 .graphql 替换为您的操作文件名的后缀,例如 .ts 或 .js

那是我的问题,或者文件地址错误

于 2021-09-13T10:29:28.613 回答
0

在某些情况下,此错误可能是由于项目的绝对路径中有空格造成的。例如:/home/my project folder with spaces/node_modules/*

于 2022-02-21T22:07:38.007 回答