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

Express+TypeScript项目axios报ECONNREFUSED 127.0.0.1:80错误如何解决

问题根因

connect ECONNREFUSED 127.0.0.1:80 报错的核心原因是 axios 实际发起请求的地址不是你配置的远端接口,而是默认指向了本地80端口,且本地80端口没有运行对应服务,本质是请求URL生成逻辑异常。

解决方案

按优先级依次排查修复:

  • 第一步:排查环境变量加载问题
    你代码中请求地址从 process.env.GET_CANDIDATE 读取,最常见的情况是环境变量未正确加载,读取结果为 undefined,导致最终请求URL为空,axios fallback到本地地址。
    修复步骤:
    1. 在getCandidate方法中先打印环境变量值确认是否读取正确:
      console.log('读取到的接口地址:', process.env.GET_CANDIDATE)
      
    2. 如果输出为undefined,确认你已正确配置环境变量加载逻辑:
      安装dotenv依赖:npm install dotenv --save
      在项目入口文件(如app.ts/index.ts)最顶部引入dotenv:
      import 'dotenv/config'
      
      确认.env文件放在项目根目录(和package.json同级),且变量名拼写正确:
      GET_CANDIDATE=https://myapi.com/你的接口路径
      
  • 第二步:检查URL格式与util.format用法
    1. 确保环境变量中的地址带完整协议头(http://或https://),如果仅写myapi.com没有协议,axios会识别为相对路径,默认请求本地地址。
    2. 如果你的process.env.GET_CANDIDATE中配置了占位符(如https://myapi.com/%s),需要给util.format传入对应数量的参数,空传会导致URL生成错误。
  • 第三步:修复axios配置逻辑避免污染
    你当前直接修改axios.defaults.headers.common属于全局配置,一方面会覆盖其他请求的公共头,另一方面如果其他地方配置了错误的axios.defaults.baseURL也会影响当前请求。建议改成单次请求单独传headers:
    async getCandidate(body: any) {
      const url = util.format(process.env.GET_CANDIDATE);
      const token = await gjwt.getToken();
      try {
        const res = await axios.post(url, body, {
          headers: {
            Authorization: `Bearer ${token}`
          }
        });
        return res.data;
      } catch (err) {
        // 打印实际请求地址方便定位
        console.log('请求失败,实际调用地址:', err.config?.url, '错误信息:', err.message)
        throw err;
      }
    }
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:00:07