PM2显示online但请求无响应,需查真实日志:执行pm2 logs --lines 100,重点排查模块缺失、端口占用、ESM语法错误;再用ss -tuln | grep :3000确认监听地址是否为*:3000或:::3000,而非仅127.0.0.1:3000,并检查宝塔防火墙与云安全组是否放行该端口。
PM2 进程显示 online 但请求无响应?先看真实日志
宝塔界面显示“启动成功”不等于 Node 进程真在跑。PM2 可能卡在初始化阶段就退出,而面板没刷新状态。最直接的办法是登录服务器终端,执行:
。重点看最后一屏有没有以下内容:
—— 路径填错或工作目录不对
—— 端口冲突,可能是旧进程没杀干净
—— 用了 ESM 语法(
)但 Node 版本太低("type": "module"
空日志?说明 PM2 根本没执行到你的脚本,问题出在启动命令或解释器路径
注意:
默认只查最近一个应用;多项目时加
指定名称。宝塔界面上的“日志”页签是操作日志,不是应用日志,别混淆。
启动命令写
就失败?必须用绝对路径
宝塔 PM2 管理器不会自动加载你的 shell profile(比如
),所以它找不到 nvm 安装的
,也不会识别
或相对路径。填
在绝大多数情况下都会报
。
正确做法:在宝塔“启动脚本”栏填完整绝对路径,例如:
如果项目根目录是
,那“项目路径”必须填这个,不是
更稳妥的方式是改用
,显式指定
和
,比宝塔表单更可控
检查 Node 解释器是否匹配:在入口文件第一行加
,对比你预期的版本
Nginx 反向代理配了还是 502?关键头缺失是高频原因
宝塔点“反向代理”自动生成配置,但默认不加
,这会导致后端框架(如 Express、Nest)读不到
,鉴权、重定向、静态资源路径全乱套。
php版微信js-sdk支付接口类
php版微信js-sdk支付接口类
下载
进「网站」→ 对应站点 → 「配置文件」,确认有这几行(尤其
和
):
删掉“启用缓存”——Node.
js
是动态服务,开缓存会返回过期响应
执行
验证语法,再
或
生效
如果
能通,但域名访问 502,基本就是 proxy_pass 地址写错端口,或 Nginx 没连上本地服务
服务监听地址是
?外部请求根本到不了
这是最隐蔽也最常被跳过的环节。Node 进程默认监听
,意味着只有本机能访问,Nginx 作为同机进程可以连上,但浏览器通过公网 IP 或域名访问时,流量压根进不来。
检查项目入口(如
)里
的调用:
✅ 正确:
❌ 错误:
验证方式:执行
,输出中必须含
或
,不能只有
如果没输出,说明服务根本没起来——回退查 PM2 日志和启动命令
即使监听对了,还要过两道网关:宝塔防火墙 + 云平台安全组,二者都得放行对应端口(如 3000)
真正卡住的地方往往不在代码,而在监听地址、环境路径、Nginx 头三者之间的微小错位。每次改完,记得用
、
、
逐层验证,别依赖面板状态。
pm2 logs --lines 100Error: Cannot find moduleport 3000 is already in useReferenceError: require is not definedimportpm2 logs--name my-apinpm start.bashrcnpm~npm startcommand not found/www/server/nvm/versions/node/v18.19.1/bin/npm start/www/wwwroot/my-app/www/wwwroot/my-app/srcecosystem.config.jscwdscriptconsole.log('NODE_VERSION:', process.version)proxy_set_header Host $host;req.headers.hostHostX-Real-IPproxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;nginx -tbt reloadnginx -s reloadcurl http://127.0.0.1:3000127.0.0.1:3000127.0.0.1server.jsapp.listen()app.listen(3000, '0.0.0.0', () => {...})app.listen(3000, '127.0.0.1', () => {...})ss -tuln | grep :3000*:3000:::3000127.0.0.1:3000ss -tulnpm2 logsnginx -t