在 Linux 上定位 Node.js 报错,通常可以从错误信息、日志、进程状态、系统资源、代码层面几个方向入手。下面给你一套实用流程。
Node.js 报错一般会打印:
示例:
TypeError: Cannot read properties of undefined (reading 'id')
at getUser (/app/service/user.js:23:15)
✅ 重点看:
不同方式报错位置不同:
| 运行方式 | 看哪里 |
|---|---|
node app.js |
终端直接看 |
npm start |
看 npm 输出 |
| PM2 | pm2 logs |
| Docker | docker logs 容器名 |
| systemd | journalctl -u 服务名 |
如果有日志库(winston / pino / log4js):
tail -f logs/error.log
pm2 logs
pm2 logs appname --err
docker logs -f 容器名
docker logs --tail 100 容器名
journalctl -u node-app -f
ps -ef | grep node
top
htop
free -h
df -h
Node.js 常见崩溃原因:
process.on('uncaughtException', (err) => {
console.error('未捕获异常:', err);
});
process.on('unhandledRejection', (reason) => {
console.error('未处理的 Promise 拒绝:', reason);
});
node --inspect app.js
然后用 Chrome:
chrome://inspect
console.log(JSON.stringify(data, null, 2));
| 报错 | 原因 |
|---|---|
EADDRINUSE |
端口被占用 |
EACCES |
权限不足(如 80 端口) |
MODULE_NOT_FOUND |
依赖没装 |
ENOENT |
文件/路径不存在 |
SyntaxError |
代码语法错误 |
heap out of memory |
内存溢出 |
如果你愿意,可以把具体报错信息或运行方式贴出来,我可以直接帮你定位是哪一类的 Node.js 问题。