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]),
]),
);
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?
Comentario más útil
¿Algún progreso en esto?