温馨提示×

如何定位debian nodejs日志错

小樊
62
2026-09-10 04:47:10
栏目: 编程语言

在 Debian 上定位 Node.js 日志和错误,可以按下面几个层次来做。


一、先确认 Node.js 是怎么运行的

不同运行方式,日志位置完全不同。

1. 直接命令行运行

node app.js
  • 错误直接输出在终端
  • 标准错误:stderr
  • 可用重定向保存:
node app.js > app.log 2>&1

2. 使用 PM2(最常见)

pm2 logs
pm2 logs appname

日志默认在:

~/.pm2/logs/

例如:

~/.pm2/logs/appname-error.log
~/.pm2/logs/appname-out.log

3. 使用 systemd 服务

查看服务名:

systemctl list-units | grep node

查看日志:

journalctl -u yourapp.service -f

或只看错误:

journalctl -u yourapp.service -p err

二、常见 Node.js 错误类型及定位方法

1. 启动就报错(语法 / 模块错误)

示例:

Error: Cannot find module 'express'

解决:

npm install
node -v
npm -v

2. 运行时异常(未捕获错误)

TypeError: Cannot read property 'x' of undefined

定位:

  • 看 stack trace 中的文件路径和行号
  • 加上环境变量调试:
NODE_ENV=development node app.js

3. 端口被占用

EADDRINUSE: address already in use :::3000

查找占用:

sudo lsof -i:3000
# 或
sudo ss -tulpn | grep 3000

三、查看系统级日志(Debian)

系统日志(老版本)

cat /var/log/syslog
grep node /var/log/syslog

systemd 日志

journalctl -xe
journalctl | grep node

四、在代码里规范日志(推荐)

使用 winston / pino

const winston = require('winston');

捕获未处理异常

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

process.on('unhandledRejection', e => {
  console.error('unhandledRejection', e);
});

五、快速定位 checklist

  1. ✅ 是 PM2 / systemd / 直接运行?
  2. ✅ 看对应日志(PM2 logs / journalctl)
  3. ✅ 复制错误信息关键词搜代码
  4. ✅ 确认依赖、端口、权限
  5. ✅ 用 NODE_DEBUG 或 --trace-warnings

如果你愿意,可以把具体报错信息或**运行方式(PM2 / systemd / 直接 node)**发出来,我可以帮你精确定位。

0 踩