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

使用Axios发送POST请求时出现connect ECONNREFUSED ::1:3000错误求助

解决Axios POST请求出现'connect ECONNREFUSED ::1:3000'的问题

问题分析与修复步骤

1. 服务器未启动就发送请求

你的Axios请求在app.listen之前直接执行,此时Express服务器还未完成启动,无法接收请求,这是导致连接拒绝的核心原因之一。

修复方案:将Axios请求放在app.listen的回调函数中,确保服务器启动后再发送请求:

app.listen(3000, "127.0.0.1", async () => {
  console.log("Server is listening at port 3000");
  // 服务器启动后再发送Axios请求
  try {
    const response = await axios.post(
      "http://127.0.0.1:3000/api/v1/user",
      { firstName: "Fred", lastName: "Flintstone" },
      { headers: { "Content-type": "application/json" } }
    );
    console.log(response.data || "hello");
  } catch (error) {
    console.log(error.message);
  }
});

2. 接口请求方法不匹配

你用Axios发送的是POST请求,但后端只定义了/api/v1/user的GET路由,即使服务器启动也会返回404错误。

修复方案:添加POST路由处理:

app.route("/api/v1/user")
  .get((req, res) => {
    console.log(req.body);
    res.send(req.body);
  })
  .post((req, res) => { // 新增POST处理逻辑
    console.log(req.body);
    res.status(201).send({ message: "用户创建成功", user: req.body });
  });

3. 回调中未定义的res变量

原代码中Axios的then回调里使用了res.send(),但这个res并不是Express的响应对象(它不在路由处理函数的作用域内),会导致ReferenceError。

修复方案:如果需要在请求后返回响应,将Axios请求放在某个路由处理函数中,而不是直接在全局执行。例如:

// 新增测试路由,触发Axios请求并返回结果
app.get("/test-post", async (req, res) => {
  try {
    const response = await axios.post(
      "http://127.0.0.1:3000/api/v1/user",
      { firstName: "Fred", lastName: "Flintstone" },
      { headers: { "Content-type": "application/json" } }
    );
    console.log(response.data);
    res.send(response.data);
  } catch (error) {
    console.log(error.message);
    res.status(500).send({ error: error.message });
  }
});

4. 地址解析不一致

服务器监听的是127.0.0.1(IPv4),但Axios请求的是localhost,部分系统中localhost会优先解析为IPv6的::1,导致请求无法连接到绑定IPv4的服务器。

修复方案:将Axios请求的地址改为http://127.0.0.1:3000/api/v1/user,和服务器监听地址保持一致。

完整修复后的代码

const express = require("express");
const axios = require("axios");

const app = express();
app.use(express.json());

// 定义GET和POST路由
app.route("/api/v1/user")
  .get((req, res) => {
    console.log(req.body);
    res.send(req.body);
  })
  .post((req, res) => {
    console.log(req.body);
    res.status(201).send({ message: "用户创建成功", user: req.body });
  });

// 新增测试路由,用于触发Axios请求
app.get("/test-post", async (req, res) => {
  try {
    const response = await axios.post(
      "http://127.0.0.1:3000/api/v1/user",
      { firstName: "Fred", lastName: "Flintstone" },
      { headers: { "Content-type": "application/json" } }
    );
    console.log(response.data);
    res.send(response.data);
  } catch (error) {
    console.log(error.message);
    res.status(500).send({ error: error.message });
  }
});

// 启动服务器
app.listen(3000, "127.0.0.1", () =>
  console.log("Server is listening at port 3000")
);

使用说明:启动服务器后,访问http://127.0.0.1:3000/test-post即可触发Axios的POST请求,查看控制台和页面响应。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 05:53:29