Graphql-config не распознает директиву Apollo Graphql @client - PullRequest
3 голосов
/ 06 июля 2019

Я использую Apollo Client с React, graphql-tag , загруженный с Webpack, и graphql-config для поддержки схемы на клиенте.

Тамэто файл ./myclient/src/features/stats/graphql/getStart.graphql

query GetStart {
    start @client
}

, где start и @client не проверяются с помощью плагина IDE graphql, поскольку они не включены в автоматически сгенерированную схему.

./myclient/.graphqlconfig file

{
    "projects": {
    "client": {
      "schemaPath": "schema.graphql",
      "extensions": {
        "endpoints": {
          "dev": "http://localhost:3000/graphql"
        }
      }
    }
  }
}

Webpack настроен для загрузки схемы graphql на клиенте с помощью

{
  test: /\.(graphql|gql)$/,
  exclude: /node_modules/,
  use: 'graphql-tag/loader',
},

Он будет загружать схему сервера правильно.Но как мне настроить его для проверки или игнорирования start @client, вызывающего ошибки Unknown field "start" on object "Query" и Unknown directive "@client"?

1 Ответ

2 голосов
/ 09 июля 2019

Можно определить схему на стороне клиента для клиента Apollo, Документы .Я создал файл ./src/apollo/graphql/typeDefs.graphql, содержащий определения типов.

directive @client on FIELD

type RestParams {
    limit: Int
    page: Int
}

extend type Query {
    restParams: RestParams
}

Я импортировал typeDefs.graphql в файл client.js и добавил typeDefs в опции конструктора ApolloClient.

import { ApolloClient } from 'apollo-client';
import { ApolloLink } from 'apollo-link';
import { InMemoryCache } from 'apollo-cache-inmemory';

import TYPE_DEFS from './graphql/typeDefs.graphql';
import createHttpLink from './links/httpLink';
import createErrorLink from './links/errorLink';
import createAuthLink from './links/authLink';

const errorLink = createErrorLink();
const httpLink = createHttpLink();
const authLink = createAuthLink();

const cache = new InMemoryCache({});

const client = new ApolloClient({
  cache,
  link: ApolloLink.from([
    authLink,
    errorLink,
    httpLink,
  ]),
  // resolves,
  typeDefs: TYPE_DEFS,
  connectToDevTools: true,
});

export default client;

Определения типов не могут быть обнаружены IDE, но они также могут быть обнаружены подключаемым модулем Apollo Chrome.

...