<p>apollo-link-error: graphQLErrors param siempre está indefinido</p>

Creado en 19 ene. 2018  ·  4Comentarios  ·  Fuente: apollographql/apollo-link

Resultado previsto: registro de mensajes GraphQLError en la consola

Los mensajes de error devueltos por consultas fallidas nunca parecen llegar a onError() ya que graphQLErrors siempre está indefinido, pero siempre recibo un error de red. Puedo encontrar la solicitud fallida con los mensajes de error de respuesta en la pestaña de red de Chrome. ¿Me estoy perdiendo 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

Comentario más útil

¿Algún progreso en esto?

Todos 4 comentarios

mismo problema aquí. Nos gustaría tener una función onError global.
Actualmente estamos pasando la función onError a cada función subscribeToMore :

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

@goldo exactamente, ese patrón no se escala bien cuando realmente solo desea registrar todo, ¡de ahí el enlace de error!

Lo que encuentro confuso sobre los documentos es este código:

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

¿La política de errores por consulta afecta de alguna manera cómo onError() obtiene sus mensajes? ¿O tal vez hay algunos parámetros nuevos para GraphQL-Tools / Apollo Server para habilitar el registro de errores?

@ tim-soft ¿es posible que la biblioteca fetch que está utilizando esté tratando el estado de HTTP 400 como un error de red? Me he encontrado con algunos módulos de búsqueda como ese.

¿Algún progreso en esto?

¿Fue útil esta página
0 / 5 - 0 calificaciones