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

在AWS Lambda运行Node.js Express报错:listen EADDRINUSE地址已被占用

解决AWS Lambda + aws-serverless-express 报 EADDRINUSE 错误的调试方案

核心排查与解决步骤

1. 修复aws-serverless-express初始化的Socket路径问题

错误日志里的/tmp/server-undefined.sock明确说明Socket文件名包含undefined,大概率是初始化时参数缺失或变量未定义:

  • 显式指定Socket路径,避免动态变量导致的未定义问题:
    // 错误示例:依赖未定义的变量生成路径
    const server = awsServerlessExpress.createServer(app, null, null, `/tmp/server-${serverName}.sock`);
    // 正确写法:直接写死路径或确保变量有值
    const server = awsServerlessExpress.createServer(app, null, null, '/tmp/server-collage.sock');
    
  • 把Server初始化放在Lambda Handler外部,避免每次请求重复创建绑定Socket:
    // 放在handler外,仅初始化一次
    const app = require('./app');
    const awsServerlessExpress = require('aws-serverless-express');
    const server = awsServerlessExpress.createServer(app, null, null, '/tmp/server-collage.sock');
    
    exports.handler = (event, context) => {
      return awsServerlessExpress.proxy(server, event, context);
    };
    

2. 适配Node.js 18环境兼容性

  • 检查aws-serverless-express版本:执行npm ls aws-serverless-express,若版本低于3.4.0,更新到最新稳定版:
    npm install aws-serverless-express@latest
    
  • Node.js 18的http模块行为有变更,确认Express代码中没有手动修改Socket相关配置,比如自定义server.listen参数。

3. 清理部署包缓存

  • 即使新建Lambda,若复用旧S3部署包,可能残留旧代码:删除本地node_modules,重新执行npm install,打包全新的部署包上传到Lambda。
  • 检查Lambda层(Layer)是否包含旧版本依赖,若有则更新层内容。

4. 本地模拟调试

  • 用serverless-offline或aws-lambda-local在本地复现Lambda环境:
    • 执行lsof /tmp/server-collage.sock(Mac/Linux)查看Socket占用进程,确认是否有残留。
    • 本地运行Handler,观察是否每次请求都会重复绑定Socket。

5. 替换为维护分支依赖

如果以上方法无效,改用@vendia/serverless-express(原aws-serverless-express的官方维护分支),对Node.js 18兼容性更好:

npm uninstall aws-serverless-express
npm install @vendia/serverless-express

修改代码:

const serverlessExpress = require('@vendia/serverless-express');
const app = require('./app');
const server = serverlessExpress.createServer(app);

exports.handler = (event, context) => serverlessExpress.proxy(server, event, context);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 18:31:01