Mac环境下Axios请求持续出现socket hang up ECONNRESET错误求助
解决Axios在Mac上出现
socket hang up ECONNRESET的方案 以下是针对你遇到问题的排查和解决步骤:
1. 检查系统代理与VPN
- 关闭系统代理:打开「系统设置」→「网络」→ 选中当前网络点击「高级」→「代理」,取消所有勾选的代理选项,重启终端或Node服务后重试。
- 断开VPN测试:部分VPN的路由规则会干扰正常网络连接,先切换到本地网络发起请求。
2. 调整Axios请求配置
- 显式设置超时时间,避免因默认超时过短触发连接重置:
let config = { method: "get", url: "https://google.com", timeout: 10000 // 设置10秒超时 }; - 强制使用HTTP/1.1(部分服务器对HTTP/2兼容性不佳),需先引入
https模块:const https = require('https'); let config = { method: "get", url: "https://google.com", httpsAgent: new https.Agent({ keepAlive: true, maxVersion: 'TLSv1.2' // 也可指定TLS版本,避免兼容性问题 }) };
3. 验证系统网络连通性
- 用
curl命令测试目标URL,判断是系统网络问题还是Axios配置问题:curl -v https://google.com- 如果
curl也报错:检查DNS设置(可切换至8.8.8.8或1.1.1.1),或联系网络管理员排查网络限制。 - 如果
curl成功:问题集中在Node.js/Axios层面,继续下一步。
- 如果
4. 升级Node.js版本
旧版本Node.js的HTTP模块存在连接池或TLS协议的Bug,建议升级至LTS版本(如v18或v20),重新测试请求。
5. 检查防火墙与安全软件
- 确认Mac自带防火墙未拦截Node.js:打开「系统设置」→「隐私与安全性」→「防火墙」,确保Node.js被允许联网。
- 暂时关闭第三方安全软件(杀毒、防火墙工具),排除拦截可能性。
6. 修正代码逻辑问题
你的代码中存在未处理的异常分支风险,调整后确保错误场景下的正确响应:
let config = { method: "get", url: "https://google.com", timeout: 10000 }; try { const response = await axios(config); console.log(JSON.stringify(response.data)); res.send(response.data); // 正确返回响应数据 } catch(err){ console.log(err.message, err.code); res.status(500).send({ error: err.message, code: err.code }); // 错误时返回500状态码及信息 }
内容的提问来源于stack exchange,提问作者Nick Ghuman
相关产品推荐
相关产品推荐

