<p>apollo-link-error: o parâmetro graphQLErrors é sempre indefinido</p>

Criado em 19 jan. 2018  ·  4Comentários  ·  Fonte: apollographql/apollo-link

Resultado pretendido: registro de mensagens graphQLError no console

As mensagens de erro retornadas de consultas com falha nunca parecem chegar a onError() pois graphQLErrors é sempre indefinido, mas sempre recebo um networkError. Posso encontrar a solicitação com falha com as mensagens de erro de resposta na guia de rede do Chrome. Estou esquecendo de algo?

// Log errors
const errorLink = onError(({ graphQLErrors, networkError }) => {
  if (graphQLErrors)
    graphQLErrors.map(({ message, locations, path }) =>
      console.log(
        `[GraphQL error]: Message: ${message}, Location: ${locations}, Path: ${path}`
      )
    );
  if (networkError) console.log(`[Network error]: ${networkError}`);
});

// Combine all links
const link = split(
  // split based on operation type: subscription or query/mutation
  ({ query }) => {
    const { kind, operation } = getMainDefinition(query);
    return kind === 'OperationDefinition' && operation === 'subscription';
  },

  // Subscriptions Link
  from([
    // Log Apollo operations in development
    ...(__DEV__ ? [apolloLogger] : []),

    // Handle subscriptions, log errors in dev
    ...(__DEV__ ? [errorLink.concat(subscriptionsLink)] : [subscriptionsLink]),
  ]),


  // Uploads/http Link
  from([
    // Log Apollo operations in development
    ...(__DEV__ ? [apolloLogger] : []),

    // Handle http/file uploads, log errors in dev
    ...(__DEV__ ? [errorLink.concat(uploadLink)] : [uploadLink]),
  ]),
);

bug

Comentários muito úteis

Algum progresso nisso?

Todos 4 comentários

mesmo probleme aqui. Gostaríamos de ter uma função onError global.
Atualmente estamos passando a função onError para cada função subscribeToMore :

this.unsubscribe = data.subscribeToMore({
        document: ...,
        variables: {...}       
        updateQuery: (previous, { subscriptionData }) => {
          ...
        },
        onError: err => {
          console.log({ err })
        },
      })

@goldo exatamente, esse padrão não escala bem quando você realmente deseja apenas registrar tudo, por isso o link de erro!

O que acho confuso sobre os documentos é este código:

const withDataAndErrors = graphql(MY_MIXED_QUERY, {
  options: {
    errorPolicy: 'all'
  }
});

A política de erro por consulta afeta de alguma forma como onError() recebe suas mensagens? Ou talvez haja alguns novos parâmetros para GraphQL-Tools / Apollo Server para permitir o registro de erros?

@ tim-soft, é possível que a biblioteca fetch que você está usando esteja tratando o status HTTP 400 como um erro de rede? Eu encontrei alguns módulos de busca como esse.

Algum progresso nisso?

Esta página foi útil?
0 / 5 - 0 avaliações