Apollo CodeGen не может генерировать типы TS

#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"
}
  

Я надеюсь, что это поможет