在 Ubuntu 上解读 Node.js 日志,通常可以从日志来源、日志格式、常见错误类型、排查方法几个层面来看。下面系统讲一下。
node app.js
你会看到:
console.log() → 普通信息console.error() → 错误信息如果 Node.js 是用 systemd 管理的:
journalctl -u your-node-service
或实时查看:
journalctl -u your-node-service -f
pm2 logs
pm2 logs app-name
例如 winston、pino 等日志库写入:
/var/log/node-app/error.log
Server running on port 3000
✅ 正常启动信息
Error: connect ECONNREFUSED 127.0.0.1:5432
at TCPConnectWrap.afterConnect (net.js:1146:16)
含义:
ECONNREFUSED:连接被拒绝127.0.0.1:5432:PostgreSQL 没启动或端口不对| 错误信息 | 含义 | 排查方向 |
|---|---|---|
EADDRINUSE |
端口被占用 | 换端口 / 杀进程 |
ECONNREFUSED |
服务未启动 | 检查 DB / Redis |
ENOENT |
文件不存在 | 检查路径 |
SyntaxError |
JS 语法错误 | 看报错行号 |
TypeError: xxx is not a function |
调用错误 | 检查模块导入 |
Cannot find module |
依赖缺失 | npm install |
UnhandledPromiseRejection |
Promise 未捕获 | 加 catch |
Error: something broke
at app.js:23:10
→ 直接看 app.js 第 23 行
DEBUG=* node app.js
或只调试某个模块:
DEBUG=express:* node app.js
console.logsystemd + journalctlprocess.on('uncaughtException', ...)
process.on('unhandledRejection', ...)
你可以直接贴一段 Node.js 日志内容,我可以:
你现在是 本地运行 / systemd / PM2 / Docker 哪种方式?