#apollo
#apollo
Вопрос:
Я пытаюсь сгенерировать некоторые TS-типы с помощью Apollo CodeGen, используя json из запроса самоанализа.
Верхняя часть файла схемы выглядит следующим образом (дайте мне знать, если я смогу предоставить другую информацию)
{
"data": {
"__schema": {
...
ошибка, которую я получаю, заключается в следующем
➜ continuum git:(typescript) ✗ apollo client:codegen --target typescript --localSchemaFile="./schema.json"
{ Error: Error in "Loading schema for Unnamed Project": Syntax Error: Expected Name, found }
За этим следует МНОЖЕСТВО выходных данных, в которых я не могу разобраться. Вот немного об этом:
graphql-schema:/schema.graphql?"""Schema for types that can be active or inactive"""
interface ActivatedInterface {
"""Is this object enabled?"""
active: Bool!
}
"""An advertisement"""
type Ad implements CommonInterface {
"""Aggregate data for the campaigns field"""
_campaignStats(
"""Only live items"""
onlyLive: Bool = null
"""
Filters to be applied to the results.
The following Campaign
fields are available for filtering:
externalId
, operators:
startsWith
, notStartsWith
, =
, !=
, &<&>
, &>
,
&>=
, =&>
, &<
,
&<=
, =&<
, &<=&>
, isNull
, isNotNull
Чего не хватает в моей схеме?
Комментарии:
1. Что такое
MyAPI
? Ваш результат самоанализа JSON должен иметь только одно свойство, и этоdata
. Как вы генерируете этот результат самоанализа?2. @DanielRearden Изначально я пытался использовать свойство верхнего уровня
data
, и я отредактировал свой вопрос, указав, что происходит, когда я использую это вместо. Результат самоанализа генерируется путем помещения этого запроса самоанализа в мой клиент graphql и копирования результирующего json. gist.github.com/michiel/0cf0a76fb8714f6c9727be6f64256adf
Ответ №1:
Если вы получаете синтаксическую ошибку, скорее всего, это связано с неправильной формой файла схемы. Самый простой способ сгенерировать результат самоанализа для вашей конечной точки — это просто запустить эту команду:
apollo service:download --endpoint=<YOUR_ENDPOINT_URL>
Это сгенерирует schema.json
файл в вашем рабочем каталоге.
В качестве дополнительного примечания, для генерации определений типов вам также понадобятся запросы на стороне клиента. Вот статья, в которой рассматривается более подробно, поскольку это действительно выходит за рамки вашего первоначального вопроса. Ваша полная команда должна выглядеть примерно так:
apollo codegen:generate --localSchemaFile=schema.json --target=typescript --includes=src/**/*.ts --tagName=gql --addTypename --globalTypesFile=src/types/graphql-global-types.ts types
Вы можете ознакомиться с описанием всех опций в документах.
Ответ №2:
Это мой скрипт:
{
"types:generate": "apollo codegen:generate --target=typescript --includes=src/**/*.ts --endpoint **youAPI** --header "Authorization: Basic cHJvamVjdDpzZWV5b3V3ZWIyMDIw(replace your)" --tagName=gql --addTypename --outputFlat src/types"
}
Я надеюсь, что это поможет