Résultat attendu
Les messages d'erreur renvoyés par les requêtes ayant échoué ne semblent jamais atteindre onError()
car graphQLErrors
est toujours indéfini, mais je reçois toujours une erreur networkError. Je peux trouver la demande ayant échoué avec les messages d'erreur de réponse dans l'onglet réseau de chrome. Est-ce que j'ai raté quelque chose ?
// 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]),
]),
);
même problème ici. Nous aimerions avoir une fonction globale onError
.
Actuellement, nous transmettons la fonction onError à chaque fonction subscribeToMore
:
this.unsubscribe = data.subscribeToMore({
document: ...,
variables: {...}
updateQuery: (previous, { subscriptionData }) => {
...
},
onError: err => {
console.log({ err })
},
})
@goldo exactement, ce modèle ne s'adapte pas bien lorsque vous voulez vraiment tout enregistrer, d'où le lien d'erreur!
Ce que je trouve déroutant dans la doc, c'est ce code :
const withDataAndErrors = graphql(MY_MIXED_QUERY, {
options: {
errorPolicy: 'all'
}
});
La politique d'erreur par requête a-t-elle un impact sur la façon dont onError()
reçoit ses messages ? Ou peut-être y a-t-il de nouveaux paramètres dans GraphQL-Tools/Apollo Server pour activer la journalisation des erreurs ?
@tim-soft est-il possible que la bibliothèque fetch
que vous utilisez traite le statut HTTP 400 comme une erreur réseau ? J'ai rencontré quelques modules de récupération comme celui-ci.
Des progrès à ce sujet ?
Commentaire le plus utile
Des progrès à ce sujet ?