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

Next.js连接Strapi报ECONNREFUSED ::1:1337错误如何解决

问题根因

报错connect ECONNREFUSED ::1:1337的核心原因:

  1. getStaticProps属于Next.js的SSG静态生成逻辑,在页面构建阶段完全运行在Node.js服务端,接口请求由Node.js直接发出,和浏览器、Postman的请求环境相互独立
  2. Node.js 17及以上版本默认调整了DNS解析优先级,会把localhost优先解析为IPv6回环地址::1
  3. 本地默认启动的Strapi服务仅绑定了IPv4回环地址127.0.0.1:1337,没有监听IPv6的1337端口,导致连接直接被拒绝

Postman、浏览器能正常访问接口,是因为这类客户端默认优先将localhost解析为IPv4地址,和Node.js的解析规则不一致,才会出现“客户端能通但Next.js服务端请求失败”的错位现象。

修正方案

按优先级从高到低选择任意一种即可生效:

  • 方案1(最快无副作用):直接替换请求地址的localhost为IPv4回环地址
    找到getStaticProps中的axios请求逻辑,跳过DNS解析步骤直接指定IPv4地址,改完重启Next.js服务即可:
    // 修改前
    const res = await axios.get('http://localhost:1337/api/foods')
    // 修改后
    const res = await axios.get('http://127.0.0.1:1337/api/foods')
    
  • 方案2:调整Strapi启动配置,同时监听IPv4/IPv6地址
    打开Strapi项目下的config/server.js配置文件,修改host绑定规则,改完重启Strapi服务即可:
    module.exports = ({ env }) => ({
      host: env('HOST', '0.0.0.0'), // 原有默认值为127.0.0.1,修改为0.0.0.0后会监听所有网卡地址
      port: env.int('PORT', 1337),
      // 其余原有配置保持不变
    })
    
  • 方案3:调整Node.js启动参数,强制优先解析IPv4地址
    修改Next.js项目package.json中的启动脚本,添加DNS解析规则参数,改完重启Next.js服务即可:
    {
      "scripts": {
        "dev": "NODE_OPTIONS='--dns-result-order=ipv4first' next dev",
        "build": "NODE_OPTIONS='--dns-result-order=ipv4first' next build",
        "start": "NODE_OPTIONS='--dns-result-order=ipv4first' next start"
      }
    }
    
    Windows系统直接设置环境变量报错的话,可以安装cross-env依赖做跨平台环境变量兼容。
验证标准

修改完成后重新触发Next.js页面构建,终端不再出现ECONNREFUSED类报错,页面能正常渲染从Strapi拉取的美食列表数据即为修复成功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 18:31:04