【问题标题】:AWS Lambda Error EADDRINUSE on every invoke每次调用时出现 AWS Lambda 错误 EADDRINUSE
【发布时间】:2026-01-22 02:10:01
【问题描述】:

我创建了一个通过 API Gateway 访问的 Nodejs AWS Lambda 函数,它直到昨天都运行良好。但是,如果没有我对任何东西进行任何更改,它就不再起作用了。

每当我尝试调用该函数时,它都会立即以错误终止

{
    "errorType": "Error",
    "errorMessage": "listen EADDRINUSE: address already in use 0.0.0.0:3000",
    "code": "EADDRINUSE",
    "errno": -98,
    "syscall": "listen",
    "address": "0.0.0.0",
    "port": 3000,
    "stack": [
        "Error: listen EADDRINUSE: address already in use 0.0.0.0:3000",
        "    at Server.setupListenHandle [as _listen2] (net.js:1318:16)",
        "    at listenInCluster (net.js:1366:12)",
        "    at Server.listen (net.js:1452:7)",
        "    at Function.listen (/var/task/node_modules/express/lib/application.js:618:24)",
        "    at Object.<anonymous> (/var/task/app.js:433:5)",
        "    at Module._compile (internal/modules/cjs/loader.js:1068:30)",
        "    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1097:10)",
        "    at Module.load (internal/modules/cjs/loader.js:933:32)",
        "    at Function.Module._load (internal/modules/cjs/loader.js:774:14)",
        "    at Module.require (internal/modules/cjs/loader.js:957:19)"
    ]
}

我的函数甚至什么都不做。我试图删除所有内容以检查它是否是人为错误,但错误仍然存​​在。现在,我的函数唯一要做的就是:

var AWS = require("aws-sdk");
AWS.config.update({ region: "eu-central-1" });
var express = require("express");
var bodyParser = require("body-parser");
var awsServerlessExpressMiddleware = require("aws-serverless-express/middleware");

var app = express();
app.use(bodyParser.json());
app.use(awsServerlessExpressMiddleware.eventContext());

app.get("/bids/:auctionid", async function (req, res) {
  res.json({ success: "true", url: req.url, body: "call success" });
});

每次 lambda 调用都会发生错误。

【问题讨论】:

  • 看起来您正在启动一个正在监听端口 3000 的服务器,该端口已被占用。会不会是某个 express.js 服务器?

标签: node.js amazon-web-services express aws-lambda


【解决方案1】:

我通过切换到端口 3001 解决了这个问题

【讨论】:

  • 这意味着您已经在端口 3000 上运行了一些东西(例如 nodejs 服务器)。