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

如何调试Node.js调用Mailchimp接口时的ECONNRESET与socket hangup错误

解决Mailchimp API调用的"socket hang up"错误

错误原因及修复步骤

你的代码存在几个明确问题,直接导致了连接重置错误:

1. 请求结束方法调用错误

你在https.request的回调里错误调用了req.end(),正确应该调用请求对象的end()方法(即https.request返回的对象),同时write和end操作不能放在回调内部,否则请求还未写入数据就会被服务器断开连接。

2. 未监听请求错误事件

当请求发生异常时,没有注册错误监听,导致Node.js抛出未处理的error事件,直接终止程序。

3. Express未向客户端返回响应

表单提交后,你的POST路由没有给用户返回任何响应,会导致客户端一直处于等待状态。

修复后的完整代码

const express = require("express");
const bodyParser = require("body-parser");

const https = require("https");
const app = express();

app.use(express.static("public"));
app.use(bodyParser.urlencoded({ extended: true }));

app.get("/", function (req, res) {
  res.sendFile(__dirname + "/signup.html");
});

app.post("/", function (req, res) {
  const firstName = req.body.fName;
  const lastName = req.body.lName;
  const email = req.body.email;

  const data = {
    members: [
      {
        email_address: email,
        status: "subscribed",
        merge_fields: {
          FNAME: firstName,
          LNAME: lastName,
        },
      },
    ],
  };
  const jsonData = JSON.stringify(data);

  const url = "https://us21.api.mailchimp.com/3.0/lists/bf6bb54d9b";
  const options = {
    method: "POST",
    auth: "ram:395b652282fb64615919e5ffbc62e569-us21",
  };

  // 重命名变量避免和已导入的request模块冲突
  const mailchimpRequest = https.request(url, options, function (response) {
    // 根据响应状态返回对应页面
    if (response.statusCode === 200) {
      res.sendFile(__dirname + "/success.html");
    } else {
      res.sendFile(__dirname + "/failure.html");
    }

    response.on("data", function (data) {
      console.log(JSON.parse(data));
    });
  });

  // 监听请求错误,避免未处理异常
  mailchimpRequest.on("error", function (err) {
    console.error("请求失败:", err);
    res.sendFile(__dirname + "/failure.html");
  });

  // 写入数据并结束请求
  mailchimpRequest.write(jsonData);
  mailchimpRequest.end();
});

app.listen(3000, function () {
  console.log("Server is Running in Port 3000");
});

额外验证点

  • 确认Mailchimp API密钥有效,且us21前缀与你的账号服务器区域一致
  • 核对列表ID bf6bb54d9b无拼写错误
  • 确保服务器可正常访问Mailchimp API地址,未被防火墙或代理拦截

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 19:15:57