在 Linux 上运行 Node.js 服务时,“排错”通常分为 看日志、定位问题、复现与分析、修复验证 几个阶段。下面按实战方式给你一套常用方法。
常见位置:
logs/app.log)winston / pino / log4js 等查看:
tail -f logs/app.log
Node.js 的 console.log / console.error 会输出到:
如果直接用命令启动:
node app.js
如果后台运行:
node app.js > app.out.log 2> app.err.log &
如果是 systemd 启动的服务:
journalctl -u your-node-service -f
查看最近 100 行:
journalctl -u your-node-service -n 100
node app.js
通常会直接打印:
| 错误 | 原因 |
|---|---|
EADDRINUSE |
端口被占用 |
Cannot find module |
依赖没装 / 路径错 |
SyntaxError |
代码语法问题 |
ECONNREFUSED |
数据库连接失败 |
ENOMEM |
内存不足 |
ps aux | grep node
netstat -tunlp | grep node
# 或
ss -tunlp | grep 3000
top
# 或
htop
Node 内存泄漏常见表现:
heap out of memoryNODE_DEBUG=* node app.js
或只调试某模块:
NODE_DEBUG=net,http node app.js
process.on('uncaughtException', (err) => {
console.error('uncaughtException', err);
});
process.on('unhandledRejection', (reason) => {
console.error('unhandledRejection', reason);
});
生成堆快照:
node --inspect app.js
用 Chrome DevTools 连接分析。
生产环境建议:
例如:
LOG_LEVEL=debug node app.js
pm2 管理pm2 logs
pm2 monit
console.log 敏感信息如果你愿意,可以把:
发出来,我可以直接帮你具体分析。