在 Debian 上 Node.js 闪退(运行一下就退出 / 直接崩溃) 通常有以下几种常见原因,你可以对照排查:
Node.js 是脚本执行完就退出的,不是服务常驻。
例如:
console.log("hello");
运行:
node app.js
打印完就退出,这不是闪退,是正常行为。
✅ 解决:
setInterval(() => {}, 1000);
或
const http = require('http');
http.createServer((req, res) => {
res.end('ok');
}).listen(3000);
例如:
undefinedFunction();
或
JSON.parse('xxx');
Node 会直接退出,没有任何提示(特别是在 systemd / nohup 下)。
✅ 排查方法:
node app.js
看终端有没有报错。
✅ 解决:
process.on('uncaughtException', e => {
console.error(e);
});
Debian 服务器(尤其是 VPS)内存小,Node 很容易 OOM。
特征:
dmesg 里能看到 killed process✅ 检查:
dmesg | grep -i killed
✅ 解决:
node --max-old-space-size=256 app.js
如果你是用 systemd 启动 Node:
[Service]
ExecStart=/usr/bin/node /path/app.js
但:
Restart=always✅ 正确示例:
[Service]
ExecStart=/usr/bin/node /path/app.js
Restart=always
User=www-data
Environment=NODE_ENV=production
Debian 自带的 Node 可能很老(如 v10 / v12)。
✅ 检查:
node -v
✅ 建议安装官方版本:
curl -fsSL https://deb.nodesource.com/setup_20.x | bash -
apt install -y nodejs
例如:
✅ 排查:
node app.js
看具体报错。
你可以直接回答我这几个问题,我可以精准判断:
如果你愿意,可以把 启动方式 + 报错信息 发出来,我可以直接帮你定位是哪一条原因。