前端把 axios 的 timeout 设成 30,联调时所有请求都在眨眼间失败,控制台报 timeout of 30ms exceeded。服务端日志里这些请求根本没有进来。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,axios 的 timeout 单位是毫秒,和服务端常见的秒级配置不是一套。字段名里没有单位,抄配置时很容易把 30 秒写成 30。

碰到「超时单位写反」这类问题,我习惯先把当前配置原样备份一份,改坏了立刻换回来,不用现场推。别只看报错的最后一行,往上看几行,真正的起因通常在上面。

axios.get('/api/orders', { timeout: 30000 })
curl -s -o /dev/null -w '%{time_total}s\n' https://api.example.com/v1/orders

同类问题如果隔一段时间又出现,多半是某个定时任务或重启流程把改动冲掉了。把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。

具体做法是,前端超时统一按毫秒写 常量名带 Ms 后缀;和服务端超时对齐 前端略大于后端;慢接口单独放宽 不要全局调大;拦截器里记录耗时 超时能看出卡在哪一段。

最后用这个标准收尾,改成 30000 后同一个接口正常返回 控制台不再出现 timeout of 30ms。

作者 9823189