温馨提示×

nodejs日志报错如何排查

小樊
33
2026-09-23 20:37:04
栏目: 编程语言

下面按实战流程给你一个比较系统的 Node.js 日志报错排查思路,从“看现象”到“定位根因”。


一、先看报错类型(非常重要)

1️⃣ 语法/启动错误

典型:

SyntaxError: Unexpected token
Error: Cannot find module 'xxx'

✅ 排查点:

  • node -v 版本是否支持该语法
  • 是否装依赖:npm install
  • 文件路径是否正确(大小写、相对路径)

2️⃣ 运行时异常(最常见)

TypeError: Cannot read properties of undefined
ReferenceError: xxx is not defined

✅ 排查点:

  • 哪个文件、哪一行(报错栈会有)
  • 是否是 null / undefined 未做判断
  • 是否是异步数据未返回就使用

3️⃣ 异步错误(最容易漏)

UnhandledPromiseRejectionWarning

✅ 排查点:

  • 是否 await 了 Promise
  • 是否有 try/catch
  • 是否监听:
process.on('unhandledRejection', e => console.error(e))

4️⃣ 服务崩溃

Error: listen EADDRINUSE
Segmentation fault

✅ 排查点:

  • 端口被占用
  • 内存泄漏
  • Native 模块问题

二、看懂错误栈(关键技能)

示例:

Error: something wrong
    at getUser (/app/user.js:23:15)
    at async handle (/app/router.js:10:5)

✅ 重点看:

  • 最上面一行:错误原因
  • 自己的代码(不是 node_modules)
  • 行号是否对应源码(注意打包/混淆)

三、常用排查手段(实战必用)

✅ 1. 打印关键变量

console.log(JSON.stringify(data, null, 2))

✅ 2. 使用调试器

node --inspect app.js

或:

debugger;

✅ 3. 打开详细日志

DEBUG=* node app.js

(很多库支持 DEBUG)


✅ 4. 捕获全局错误

process.on('uncaughtException', e => {
  console.error('FATAL', e)
})

✅ 5. 日志工具(推荐)

不要用 console.log 生产环境:

  • winston
  • pino
  • log4js

四、典型场景速查

场景 可能原因
接口 500 未捕获 async 错误
偶发崩溃 内存泄漏
启动慢 依赖过多
CPU 100% 死循环 / 正则灾难
请求卡死 未释放连接

五、如果你愿意,我可以直接帮你

你可以直接贴:

  • ❌ 报错完整日志
  • ✅ 相关代码片段
  • ✅ Node 版本
  • ✅ 是否是 Express / Koa / Nest 等

我可以逐行帮你定位问题。

0 踩