axios重试未按预期工作,我的配置有什么问题?

7ivaypg9  于 2022-09-28  发布在  iOS
关注(0)|答案(2)|浏览(182)

我已经按照https://www.npmjs.com/package/axios-retry在我的nodejs应用程序中配置了axios重试
以下是我的代码

import axios from 'axios';
import axiosRetry from 'axios-retry';

export class RetryRoute {

  public async testRetry(
    req: express.Request,
    res: express.Response,
    next: express.NextFunction,
 ): Promise<any> {
     const client = axios.create({ baseURL: `http://www.test.com/` });
     axiosRetry(axios, { retries: 3 });

     client.get('/error') 
        .then(result => {
            this.logger.info('success', result);
            result.data; 
        }).catch(error => { 
            console.log('error', error.message);
            error !== undefined
        });
 }
}

控制台。log('error',error.message);。按预期打印。这意味着调用如预期的那样失败,代码为404。但重试的下一个调用没有发生。

acruukt9

acruukt91#

您需要指定重试条件,在代码下面为每个失败的请求重试

axiosRetry(axios, {
 retries: 3,
 retryCondition: () => true
 });
nszi6y05

nszi6y052#

https://github.com/softonic/axios-retry
默认情况下,它会在幂等请求(GET、HEAD、OPTIONS、PUT或DELETE)上重试是网络错误还是5xx错误。
http 404状态代码表示请求已成功处理,但无效。在这种情况下,它不会重试,因为它预计重试可能也会失败,几乎可以100%确定。404错误不应该像500错误或网络错误一样是暂时的。

相关问题