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

Axios GET请求随机超时,WP返回200响应但静态站点构建失败求助

可能的问题根因及排查方案

1. TCP连接复用策略不匹配

Gridsome构建运行在Node.js环境,Axios默认复用HTTP keep-alive的TCP连接,如果WP服务器/中间CDN的keep-alive超时时间短于Node.js HTTP Agent的超时时间,服务器主动断开空闲连接时,Node端可能仍在复用已失效的连接发送请求,导致请求发出去后收不到响应。Postman、浏览器的HTTP keep-alive回收策略和Node.js不同,因此不会触发该问题。
验证方案:给Axios实例配置禁用keep-alive,测试构建是否还会超时:

const http = require('http')
const https = require('https')
const axios = require('axios')
const instance = axios.create({
  httpAgent: new http.Agent({ keepAlive: false }),
  httpsAgent: new https.Agent({ keepAlive: false })
})

2. Node.js DNS解析优先级异常

默认Node.js v17+ 会优先使用IPv6解析域名,如果你的WP服务器IPv6配置有问题,Node请求时会卡在IPv6解析超时后才回退到IPv4,超出Axios配置的超时时间就会报错。浏览器、Postman默认优先使用IPv4解析,因此不会触发该问题。
验证方案:构建时添加Node.js参数强制优先IPv4:
NODE_OPTIONS=--dns-result-order=ipv4first gridsome build

3. 并发请求触发服务端/中间层限流

Gridsome构建阶段会并发发起大量API请求,一旦请求量超出WP服务器、WAF、CDN的单IP并发限制,服务端会直接丢弃请求连接,不会返回错误响应,因此你在WP侧能看到请求记录但Axios收不到响应。Postman、浏览器请求时并发量极低,不会触发限流规则。
验证方案:限制Axios请求并发数,比如用p-queue控制每秒最多发起2次请求,或者修改Gridsome数据源配置的concurrency参数降低并发量。

4. Axios/Node.js 版本兼容Bug

部分低版本Axios在Node环境下处理Chunked编码的响应时存在已知的丢包问题,对WP返回的流式响应解析失败,会误判为请求超时。
验证方案:升级Axios到最新稳定版,或者替换为node-fetch批量请求测试是否还会出现超时。

5. 中间网络设备拦截响应

如果你的构建服务器在公司内网、或者使用了第三方构建服务,出口防火墙、网关可能会检测到短时间大量请求,主动拦截响应包,导致WP侧已经返回200但Axios收不到数据。
验证方案:在构建服务器上用curl批量模拟同等并发量的请求,测试是否会出现超时,如果curl也出现同样问题,即可定位是中间网络设备的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:48:03