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"
