Обработка ошибок для клиента Apollo при использовании ApolloLink.split - PullRequest
0 голосов
/ 30 октября 2018

У меня есть простой код:

  import { split } from 'apollo-link';
  import { WebSocketLink } from 'apollo-link-ws'
  import { HttpLink } from 'apollo-link-http'
  import ApolloClient from 'apollo-client'
  import { onError } from 'apollo-link-error'

  const wsLink = new WebSocketLink({
    uri: hasura.wsUrl,
    options: {
      reconnect: true,
      timeout: 30000,
      connectionParams: {
        headers: {
          'Authorization': `Bearer ${this.token}`
        }
      }
    }
  })

  const httpLink = new HttpLink({
    uri: hasura.httpUrl,
    headers: {
      'Authorization': `Bearer ${this.token}`
    }
  })

  const link = split(
    ({ query }) => {
      const { kind, operation } = getMainDefinition(query);
      return kind === 'OperationDefinition' && operation === 'subscription';
    },
    wsLink,
    httpLink
  )

  const errorLink = onError(({graphQLErrors, networkError}) => {
    // this callback is never called
    console.log('graphQLErrors', graphQLErrors)
    console.log('networkError', networkError)
  })

  this.client = new ApolloClient({
    link: errorLink.concat(link),
    cache: new InMemoryCache()
  })

Как я могу обрабатывать ошибки для «разделенных» ссылок? В этом примере перехват ошибок не работает. Если я использую ссылки без «разделенной» функции, то перехват ошибок работает.

...