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

本地运行多Serverless应用(Serverless Offline)时3002端口占用异常问题咨询

解决serverless-offline启动时3002端口被占用的问题

这问题其实挺常见的——你只配置了HTTP服务的端口,但忽略了serverless-offline背后的Lambda运行时端口!

为什么会出现3002端口?

serverless-offline在运行时会启动两个核心服务:

  • 一个是对外提供HTTP接口的服务,就是你配置的httpPort(4000/3000)
  • 另一个是内部Lambda运行时服务器,用来处理函数的执行逻辑,这个端口默认是3002,如果你没在配置里指定,所有应用都会用这个默认值。

冲突的原因

当你启动第一个Serverless应用时,它不仅占用了你设置的HTTP端口(比如4000),还悄悄占用了默认的3002端口作为Lambda服务器的通信端口。等你启动第二个应用时,虽然HTTP端口设成了3000,但它还是会尝试用3002启动自己的Lambda服务器,这时候就会触发listen EADDRINUSE错误了。

解决方法:给每个应用配置独立的Lambda端口

只需要在每个应用的serverless.yml里,给serverless-offline加上lambdaPort配置,指定不同的端口即可:

第一个应用的配置:

custom:
  serverless-offline:
    httpPort: 4000
    lambdaPort: 3002  # 可以保留默认值,或者改成其他不冲突的端口

第二个应用的配置:

custom:
  serverless-offline:
    httpPort: 3000
    lambdaPort: 3003  # 选一个和第一个应用不一样的端口

这样两个应用的HTTP端口和内部Lambda端口都完全不冲突,就能同时本地运行了。

验证方法(可选)

如果你想确认确实是第一个应用占用了3002端口,可以用以下命令查看:

  • Mac/Linux:lsof -i :3002
  • Windows:netstat -ano | findstr :3002

执行后你会看到占用端口的进程就是第一个启动的serverless-offline实例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 07:47:44