src/**/*.graphql 포인터에 대한 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"
여기 있습니다.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!
}
공유한 파일은 서버에서 생성한 스키마이지만, 그 위에 쿼리나 변형을 만들지 않은 것 같습니다.이것이 코드젠이 제대로 작동하지 않는 이유가 될 것입니다.
다음과 같은 간단한 쿼리를 사용하여 새 파일을 만드는 것이 좋습니다.get-users.query.graphql
query GetUsers {
user {
_id
__typename
name
surname
email
phone
}
}
그리고 그것을 당신의 것에 추가합니다.src
폴더(코드젠이 모두 찾도록 구성되어 있으므로).graphql
내부의 파일src
폴더)를 선택합니다.그런 다음 코드젠을 다시 실행하여 제대로 작동하는지 확인합니다.
나중에 모든 종류의.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/*
'documents' codegen.yml 파일의 특수성
당신은 조심해야 합니다.documents
필드, 왜냐하면 입력할 때graphql-code
기본값은 예제에 제공된 값입니다.src/**/*.graphql
), 그러나 대부분의 경우 React 앱을 고려하고 있습니다.
그러나 저의 경우 Next를 사용하고 없습니다.src
디렉터리(단,create-next-app
당신에게 가질 수 있는 옵션을 줍니다.src
dir). 그래서 확장자가 있는 파일의 위치를 지정해야 합니다..graphql
정확히 그렇게 될 것입니다.
.graphql 파일이 필요한 이유
다른 소식은,.graphql
파일 또는 파일은 우리가 요청할 데이터를 코드젠에게 알려주고 있기 때문에 필요합니다. 따라서 코드젠은 우리를 위해 유형을 생성해야 합니다.
아시다시피 graphql API의 모든 데이터 또는 일부만 필요할 수 있습니다.어떤 경우든, 코드젠은 당신이 요청하는 데이터의 유형만 얻을 것입니다.
.graphql 파일을 만들지 않으면 codegen은 원하는 것을 모르기 때문에 어떤 유형도 생성하지 않습니다.
언급URL : https://stackoverflow.com/questions/58904403/unable-to-find-any-graphql-type-definitions-for-the-following-pointers-src
'itsource' 카테고리의 다른 글
Visual Studio에서 푸시되지 않은 나가는 커밋을 제거하는 방법은 무엇입니까? (0) | 2023.06.21 |
---|---|
Vuejs 3은 하위 구성 요소에서 상위 구성 요소로 이벤트를 내보냅니다. (0) | 2023.06.21 |
MongoDB 셸에서 쿼리 업데이트 (0) | 2023.06.21 |
Ubuntu에서 노드 패키지 관리자를 사용하여 패키지를 설치할 수 없음 (0) | 2023.06.16 |
팬더와 함께 기둥에 비닝하기 (0) | 2023.06.16 |