You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Axios拦截器setTimeout开发环境正常但编译部署后失效问题

问题原因
  1. 超时计算逻辑冲突
    axios配置的全局timeout: 5000是从请求进入axios处理流程就开始计时,并非从网络请求实际发出时开始计算。你在请求拦截器中添加的mock_delay延迟时间会被计入总超时时长。
    本地开发时接口响应速度快,延迟+接口响应总时长远低于5000ms所以正常;生产环境接口本身响应耗时更高,二者相加超过阈值后触发axios超时错误,直接进入响应失败流程,不会走到你写的成功回调中,自然不会打印response日志。
  2. 响应拦截器缺少错误处理
    你当前的响应拦截器仅定义了请求成功的回调函数,没有配置错误回调,超时、接口报错等异常场景都不会触发你写的日志逻辑,无法观测到异常信息。
  3. 语法瑕疵(可选排查项)
    你贴出的响应拦截器代码存在语法错误:use方法结束后应该用)闭合,你写的是},如果实际代码也是如此,生产编译阶段可能会被构建工具优化掉异常分支的逻辑,进一步加大排查难度。
解决方案
  • 调整超时配置,将延迟时长叠加到请求超时时间上,避免误触发超时:
Server.interceptors.request.use((config) => {
  if (config.mock_delay) {
    console.log('config.mock_delay', config.mock_delay)
    // 叠加延迟时长到超时时间
    config.timeout = config.timeout + config.mock_delay
    return new Promise(resolve =>
      setTimeout(() => resolve(config), config.mock_delay))
  }
  return config
})
  • 补充响应拦截器的错误处理逻辑,方便排查问题:
Server.interceptors.response.use(
  response => {
    console.log('response', response)
    return response
  },
  error => {
    console.error('请求异常:', error)
    return Promise.reject(error)
  }
)
  • 生产环境建议通过环境变量自动关闭mock_delay功能,避免不必要的性能损耗和异常风险。

内容的提问来源于stack exchange,提问作者ErichBSchulz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 05:27:02