Búsqueda de sitios web

typescript - No se pueden encontrar definiciones de tipo GraphQL para los siguientes punteros: src/**/*.graphql


Estoy usando la herramienta @graphql-codegen/cli para generar tipos de TypeScript a partir de mi servidor GraphQL. Aquí está el contenido de mi 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"

Aquí está el script package.json que uso para generar mis tipos (yarn schema):

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

Todos estos han sido generados automáticamente al ejecutar el asistente de línea de comandos yarn codegen init.

Pero cuando ejecuto yarn schema, estos son los errores que obtengo:

(el servidor está funcionando positivamente en http://localhost:3001/graphql y expone el esquema del gráfico.

Gracias por tu ayuda y sugerencia

Aquí está el archivo .graphql alojado en mi servidor (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!
}

Respuesta #1

El archivo que compartiste es tu esquema (tal como lo generó tu servidor), pero parece que no has creado ninguna consulta o mutación sobre él. Esto podría ser una razón por la cual el codegen no está funcionando correctamente.

Sugiero que crees un nuevo archivo con una consulta simple, como: get-users.query.graphql

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

Y agrégalo a tu carpeta src (ya que tu codegen está configurado para encontrar todos los archivos .graphql dentro de tu carpeta src). Luego vuelve a ejecutar el codegen y verifica si funciona correctamente.

Después, puedes generar todo tipo de archivos .graphql con tus consultas y mutaciones y usar el codegen para generar los tipos correspondientes.

Respuesta #2

En mi caso, refactoricé todas mis consultas en un solo archivo en una nueva carpeta: lib/queries.tsx.

Lo que necesitaba hacer entonces era agregar esa ruta de archivo a codegen.yml:

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

Artículos relacionados