在 Debian 上用 Node.js 启动程序“没有任何日志”,一般不是 Node 本身把日志吞了,而是日志没输出到你能看到的地方。可以按下面顺序排查(从最常见到少见):
systemd 启动?如果是 systemctl start xxx 启动的:
journalctl -u 你的服务名 -f
Node 的 console.log 默认会进 journald,不会在终端显示。
✅ 解决:
journalctlStandardOutput=append:/var/log/app.log
StandardError=append:/var/log/app.err
检查:
ps aux | grep node
常见坑:
node app.js > /dev/null 2>&1 &
✅ 解决:
node app.js > app.log 2>&1 &
先看进程在不在:
ps -ef | grep node
再看端口:
ss -lntp | grep node
如果进程都不在:
node app.js; echo $?
比如:
如果是 PM2:
pm2 logs
如果是 Docker:
docker logs 容器名
检查有没有:
console.log = () => {};
或者用了 winston / pino 但 level 设太高:
logger.level = 'error';
试:
node -e "console.log('hello')"
如果这都没输出,重装 node:
which node
node -v
node app.js 2>&1 | tee /tmp/node.log
然后:
cat /tmp/node.log
如果你愿意,可以把:
发出来,我可以直接帮你定位是哪一层把日志吃掉了。