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

AWS EC2上Node项目PM2启动显示online但无法访问如何解决?

问题原因排查
  • 启动命令与实际项目入口不匹配:大部分Node项目的npm start命令配置在package.json的scripts字段中,可能包含环境变量注入、ts文件实时转译、指定非app.js的自定义入口文件等逻辑,直接执行pm2 start app.js无法复现npm start的完整运行逻辑,会导致项目虽然进程启动,但实际未正常提供服务。
  • 工作目录与环境变量加载异常:PM2启动时如果未指定项目根目录作为工作目录,会无法加载项目内的.env配置文件、相对路径引用的静态资源等,也无法继承当前shell的运行环境变量,导致项目功能异常。
  • 监听地址配置限制:如果项目配置的监听地址为127.0.0.1,仅允许本地访问,虽然PM2进程显示为online,但外部无法正常请求到服务。
  • 旧进程残留冲突:之前手动启动的进程未完全退出,占用3000端口,导致PM2启动的进程无法正常绑定端口,但PM2未捕获到该类异常仍显示状态为online。
解决步骤
  1. 清理历史异常PM2进程
pm2 delete all

如果存在其他正常运行的PM2进程,可替换为pm2 delete <对应的异常进程ID/名称>仅删除目标进程。

  1. 使用与手动启动完全一致的逻辑启动项目
    直接通过PM2调用npm start命令,避免入口或参数不匹配问题:
pm2 start npm --name "node-project" -- start

如果当前执行命令的路径不在项目根目录下,需额外指定工作目录:

pm2 start npm --name "node-project" --cwd <你的项目根目录绝对路径> -- start
  1. 调整端口监听配置
    将项目内的监听地址从127.0.0.1修改为0.0.0.0,以Express框架为例:
app.listen(3000, '0.0.0.0', () => {
  console.log('服务已启动,端口3000')
})
  1. 验证运行状态
  • 执行pm2 logs node-project查看进程运行日志,确认无报错信息
  • 执行ss -tunlp | grep 3000确认3000端口已被Node进程正常监听
  1. 保存PM2配置
    确认项目可以正常访问后,执行以下命令保存进程列表,保证开机自启规则生效:
pm2 save

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 03:00:05