Настройка дополнительных настроек по умолчанию не передается в запросе и конфигурации - PullRequest
0 голосов
/ 06 ноября 2019

Я использую Nuxt.js с axios для разработки веб-сайта. Вот мои версии:

  "@nuxtjs/axios": "^5.3.6",
  "nuxt": "^2.4.0",

Теперь я хочу axios auto Повторить , когдазапрос является ошибкой, такой как 500 и 502

Я пробовал настройку Nuxt Axios, как показано ниже:

axios:{
  retry:{
    retries:3
  }
} 

Запрос - повторить попытку и никогда не останавливаться

Затем я пробую некоторые библиотеки, такие как retry-axios, ошибка повторится только один раз, и все настройки не работают.

Я думаю, что эта библиотека не совместима с моим проектом, поэтому я попытался сделать этофункция без библиотеки.

Это мой код в plugin/axios.js

export default function (ctx) {

/* Here is some other code for the passing the login token to the axios header*/


const { $axios, redirect, app } = ctx

$axios.defaults.retry = 3

$axios.onRequest((config) => {
    console.log('onRequest', config)
})

$axios.onError(function (error, response) {
    if (error.config) { 
      const config = { ...error.config }
      console.log("error.config", config)
      config.__retryCount = config.__retryCount || 0
      // Check if we've maxed out the total number of retries
      if (config.__retryCount >= config.retry) {
        // Reject with the error
        return Promise.reject(error)
      }
      // Increase the retry count
      config.__retryCount += 1
      // Create new promise to handle exponential backoff
      const backoff = new Promise(function(resolve) {
        setTimeout(function() {
          resolve()
        }, config.retryDelay || 1)
      })
      console.log('config pass to $axios', config)
      // Return the promise in which recalls axios to retry the request
      return backoff.then(function() {
        return $axios(config)
      })
    }

})

}

Вот результат журнала

+-----------------------+-------+--------------+
|                       | retry | __retryCount |
+-----------------------+-------+--------------+
| onRequest             | No    | No           |
+-----------------------+-------+--------------+
| Error.config          | No    | No           |
+-----------------------+-------+--------------+
| config pass to $axios | No    | Yes          |
+-----------------------+-------+--------------+

Retry и retryCount не переданы в конфигурацию при повторной попытке запроса,Таким образом, axios будет повторять попытки снова и снова. Может кто-нибудь сказать мне, как решить эту проблему? Это ошибка аксиоса или моя логика неверна?

...