NextJS生产环境Axios调用本地API遇ECONNREFUSED错误
问题解决:Next.js生产环境调用内部API出现ECONNREFUSED错误
原因分析
开发模式下localhost通常能正常解析,但生产环境中系统可能优先将localhost解析为IPv6地址::1,而你的应用可能只监听了IPv4的127.0.0.1端口,导致Axios连接被拒绝。换成127.0.0.1后强制走IPv4协议,所以能正常连接。
解决方案
1. 优先使用相对路径调用内部API
同应用内的API接口完全不需要硬编码域名,直接用相对路径即可,Next.js会自动适配开发/生产环境:
// 直接用相对路径,无需带域名 axios.post('/api/verify', { /* 请求数据 */ })
2. 配置环境变量统一API地址
如果必须使用绝对路径,建议通过环境变量管理避免硬编码:
- 在项目根目录创建
.env.production文件,添加:NEXT_PUBLIC_API_BASE_URL=http://127.0.0.1:3000 - 调用API时读取环境变量:
axios.post(`${process.env.NEXT_PUBLIC_API_BASE_URL}/api/verify`, { /* 请求数据 */ })
3. 强制Axios使用IPv4解析
修改Axios实例配置,添加family: 4参数强制使用IPv4协议解析域名:
import axios from 'axios'; const apiClient = axios.create({ baseURL: 'http://localhost:3000', family: 4 // 强制使用IPv4 }); // 调用API apiClient.post('/api/verify', { /* 请求数据 */ });
内容的提问来源于stack exchange,提问作者vivek gupta
相关产品推荐
相关产品推荐

