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]),
]),
);
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?
Comentários muito úteis
Algum progresso nisso?