Del lado del servidor, estoy lanzando un 403 Prohibido, para administrar el acceso a una llamada API.
Para detectar el error de GraphQL para una mutación, probé lo siguiente: (el método n. ° 1 funciona cuando detecta errores para useQuery() )
const [m, { error }] = useMutation(MY_MUTATION); if(error) { console.error('Error return #1'); } try { await m({ variables, onError: (e: ApolloError) => { console.error('Error return #2'); } }).catch(e) { console.error('Error return #3'); }; } catch (e) { console.error('Error return #4'); } En cambio, desde mi Apollo onError() , se devuelven los siguientes errores de GraphQL y la ejecución se detiene. No entra en ninguno de mis intentos de manejo de errores de mutación:
graphQLErrors:, Array [ Object { "extensions": Object { "code": "FORBIDDEN", "response": Object { "error": "Forbidden", "message": "Access is denied.", "statusCode": 403, }, }, "message": "Access is denied.", }, ] Si se devuelve un error de GraphQL similar desde useQuery() , lo muestra usando:
const { data, error, loading } = useQuery( MY_QUERY ); if(error) { console.error('Error return #1'); }Según la documentación de useMutation, creo que la función mutate ( onError m debe configurarla en las opciones de useMutation .
const [m, { error }] = useMutation(MY_MUTATION, { onError: (e: ApolloError) => { console.error('Error return #2'); } }); if (error) { console.error('Error return #1'); } try { await m({ variables }) } catch (e) { console.error('Error return #4'); }