我正在使用@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!
}
答案 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"