Nuxt (Vue) Обработка ошибок Apollo с использованием $ apollo.query

В моем приложении nuxt я пытаюсь вручную вызвать запрос nuxt apollo (v. 4.0.1) и обработать полученную ошибку. Я пробовал как внешнюю попытку, так и метод ошибки через запрос, однако, похоже, он не достигает ни одного обработчика.

this.$apollo
        .query({
            query: baseCategoryChildren,
            variables: { id: bCat.sys.id },
            errorPolicy: 'ignore',
            error(error, vm, key, type, options) {
                 console.log(error)
                 console.log(vm)
                 console.log(key)
                 console.log(type)
                 console.log(options)
             },
         })

В приведенном выше примере ни один из журналов консоли не выводится, вместо этого все, что я получаю, - это сообщение об ошибке Apollo по умолчанию в консоли.

app.730eca1.js:2 Uncaught (in promise) Error: Network error: Response not successful: Received status code 429
    at new n (app.730eca1.js:2)
    at app.730eca1.js:2
    at app.730eca1.js:2
    at Set.forEach (<anonymous>)
    at app.730eca1.js:2
    at Map.forEach (<anonymous>)
    at t.broadcastQueries (app.730eca1.js:2)
    at app.730eca1.js:2

Я пытаюсь проверить правильность обработки кода состояния в ответе на ошибку, но, похоже, я не могу понять ошибку в коде.

Есть идеи, почему не вызывается метод ошибки? заранее спасибо


person TheFloppyToast    schedule 09.09.2020    source источник


Ответы (1)


Вы можете объявить errorHandler в разделе apollo вашего nuxt.config.js

export default {
   // ===
   apollo: {
        clientConfigs: {
            default: {
                httpEndpoint: `${process.env.BASE_URL}/graphql`
            }
        },
        errorHandler: '~/plugins/errorhandler.apollo.js'
    },
   // other nuxt config like loading, css, plugins
}

В ~/plugins/errorhandler.apollo.js может быть что-то вроде

export default (graphqlError, { store, error, redirect, route }) => {
    console.log({ graphqlError })

    const { networkError, message, gqlError, graphqlErrors } = graphqlError

    // handle error

    return error({ statusCode: 503, message: message })
}

person Isaac Oluwatemilorun    schedule 10.09.2020