温馨提示×

linux下如何定位nodejs错误

小樊
47
2026-09-05 16:17:14
栏目: 编程语言

在 Linux 下定位 Node.js 错误,通常可以从日志、错误信息、调试工具、系统资源几个层面入手。下面按“由浅入深”的方式给你一套实用方案。


一、先看“最直接的错误”

1️⃣ 命令行报错(最常见)

直接在终端运行:

node app.js

关注:

  • Error: / TypeError: / ReferenceError:
  • 错误堆栈(stack trace)里的文件名和行号

示例:

TypeError: Cannot read property 'x' of undefined
    at app.js:23:10

✅ 重点看 最后几行堆栈


2️⃣ 后台运行(pm2 / nohup)

如果你用:

pm2 start app.js

查看日志:

pm2 logs
pm2 logs app

如果是 nohup

tail -f nohup.out

二、开启调试模式

3️⃣ 使用 --inspect

node --inspect app.js

然后用 Chrome 打开:

chrome://inspect

适合:

  • 逻辑错误
  • 变量状态异常

4️⃣ 使用 debugger

代码里加:

debugger;

再运行:

node inspect app.js

三、捕获“看不见的错误”

5️⃣ 全局异常捕获

process.on('uncaughtException', (err) => {
  console.error('未捕获异常:', err);
});

process.on('unhandledRejection', (reason) => {
  console.error('未处理的 Promise:', reason);
});

⚠️ 仅用于记录,不要吞掉错误


四、日志体系(强烈推荐)

6️⃣ 使用日志库

npm install winston

或:

npm install pino

好处:

  • 分级日志(error / warn / info)
  • 可追溯、可文件化

五、系统层面排查(Node 卡死 / 崩溃)

7️⃣ 查看是否被 OOM 杀掉

dmesg | grep -i "killed process"

或:

journalctl -xe

8️⃣ CPU / 内存占用

top
htop

找到 node 进程:

ps aux | grep node

内存泄漏可用:

node --expose-gc app.js

六、生产环境推荐组合

✅ 最佳实践:

  • pm2 管理进程
  • winston / pino 记录日志
  • pm2 logs + dmesg
  • 核心逻辑加 try/catch
  • 全局 uncaughtException

七、如果你愿意,我可以进一步帮你

你可以直接贴:

  • 报错信息
  • node -v
  • 运行方式(pm2 / docker / 裸跑)
  • 是否 CPU / 内存异常

我可以帮你精准定位是哪一类问题

0