Клиент Apollo: codegen, как генерировать наборы для директивы @client? - PullRequest
1 голос
/ 06 июля 2019

Когда я запускаю следующую команду:

apollo client:codegen --target=typescript --config=./apollo.config.js --outputFlat=./graphql.queries.ts

→ Ошибка инициализации проекта Apollo GraphQL «MySchema»: Ошибка: Ошибка в «Загрузка схемы для объединенной схемы»: ошибка: неизвестная директива "Клиент".

Это из-за одного из моих запросов, содержащих директиву @client:

query MyQuery {
    someStuff @client {
        value
    }
}

Вкл. https://github.com/apollographql/apollo-tooling/issues/366 Я обнаружил, что могу указать атрибут --clientSchema для команды apollo codegen, например:

apollo codegen:generate generated \
   --queries=src/components/**/*.tsx \
   --target typescript \
   --schema src/generated/schema.json \ 
   --clientSchema src/state/schema.graphql

Но я использую файл apollo.config.js и не могу найти, как указать этот эквивалент clientSchema в файле конфигурации.

Я вижу 2 возможных ошибки:

  • либо я не правильно использую директиву @client
  • или отсутствует поддержка (удаленная или недокументированная?) ClientSchema в файле apollo.config.js

Есть идеи?

1 Ответ

0 голосов
/ 07 июля 2019

Хорошо, похоже, мне нужно было бы добавить следующую строку непосредственно в одну из схем. Graphql

directive @client on FIELD это перегрузит определение AST для поддержки директивы @client.

Затем напишите:

query MyQuery {
    someStuff @client {
        value
    }
}

Больше не вызовет ошибку в моей IDE и не выдаст ошибки при создании соответствующих файлов query.ts.

Для информации: другой поток упомянул добавление строки вышев файле .graphqlconfig, подобном этому:

{
  "name": "Schema name",
  "schemaPath": "./pathTo/schema.graphql",
  "extensions": {
    "endpoints": {
      "Default GraphQL Endpoint": {
        "url": "http://localhost:4466",
        "headers": {
          "user-agent": "JS GraphQL"
        },
        "introspect": false
      }
    },
    "extensions": {
      "customDirectives": [
        "directive @client on FIELD"
      ]
    }
  }
}

Но добавление его в .graphqlconfig никогда не работало для меня, однако это было бы решением выкопать…

...