axios常见问题汇总

关于 axios 上传文件超时的问题记录

问题

前端上传一个 7M 文件,上传一半连接中断,后端是 java, 报了一个 tomcat 的问题,让我一直以为是后端断开连接

但是postman却可以上传(postman没有设置连接超时)

本地调试发现无法进入后端断点 (进入超时状态)
但是后端本地可以进入(后端因为是本地地址没有进入超时状态)

我想了好久也没有想明白为什么(没有想到是前端超时断开连接 后端让我帮忙看问题 唉!!! 我一直以为是后端兄弟的问题 让后端兄弟找了好久 结果却是前端的问题 唉!!!)

// axios
const service = axios.create({
  // 公共接口
  baseURL: config[config["mode"]].basicURL,
  timeout: 5000, // 0 永不超时
});
// 设置了 5秒就超时

如果仔细看看 axios 返回的错误信息就可以直接是超时问题 timeout of 5000ms exceeded

解决

增大超时时间

const service = axios.create({
  // 公共接口
  baseURL: config[config["mode"]].basicURL,
  timeout: 60000, // 0 永不超时
});

添加请求错误日志 打印详细错误信息


// 3.响应拦截器
service.interceptors.response.use(
  (response) => {
    return Promise.resolve(response.data);
  },
  (error) => {
    const { response } = error;
    let errMsg = response
      ? // 使用服务返回错误信息
        fmtError(response.data.code) || response.data.message || response.status
      : // 使用 axios 返回的错误信息
        `${error.message ? ":" + error.message : ""}`;
    logger("response error").error(errMsg);
    return Promise.reject(error);
  }
);

每次出现问题后先看看前端报错信息 再进行分析
上传大文件时尽量不设置超时

posted @ 2022-05-06 11:19  __Bowen  阅读(361)  评论(0编辑  收藏  举报