找不到以下指针的任何GraphQL类型定义:src / ** / *。graphql

时间:2019-11-17 19:33:43

标签: typescript graphql codegen graphql-codegen

我正在使用@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时,这些是我得到的错误:

enter image description here

(服务器肯定在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!
}

2 个答案:

答案 0 :(得分:1)

您共享的文件是您的架构(由服务器生成),但似乎您尚未在其之上创建任何查询或变异。这就是代码生成无法正常工作的原因。

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

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

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

随后,您可以使用查询和变异生成各种.graphql文件,并使用代码生成相应的类型。

答案 1 :(得分:0)

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

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

documents:
  - "./lib/queries.tsx"