无法为以下指针找到任何 GraphQL 类型定义:src/**/*.graphql

Unable to find any GraphQL type definitions for the following pointers: src/**/*.graphql

我正在使用 @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"

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

"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!
}

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

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

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

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

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

在我的例子中,我将所有查询重构到一个新文件夹中的单个文件中:lib/queries.tsx

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

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

请检查您的操作文件的后缀,并据此更改此文件,可能您的文件后缀是.ts 或.js,在codegen.yml 文档中默认为

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

将.graphql替换成你的操作文件名的后缀,如.ts或.js

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

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