温馨提示×

ubuntu nodejs日志怎排错

小樊
50
2026-09-12 10:47:35
栏目: 编程语言

在 Ubuntu 上排查 Node.js 日志和错误,一般可以按下面几个步骤来:


一、确认日志在哪里

1. 应用自己打的日志

  • 控制台输出(console.log / console.error)
  • 文件日志(如 logs/error.log)
  • 常用日志库:winston、pino、morgan(HTTP 日志)

2. 系统 / 进程管理日志

如果你用以下方式运行 Node.js:

systemd(最常见)

journalctl -u your-node-service.service -f

查看最近错误:

journalctl -u your-node-service.service -p err

PM2

pm2 logs
pm2 logs app-name
pm2 describe app-name

Docker

docker logs container_name
docker logs -f container_name

二、常见错误类型 & 排查思路

1. 端口被占用

错误示例:

Error: listen EADDRINUSE :::3000

排查:

sudo lsof -i:3000
# 或
sudo netstat -tunlp | grep 3000

解决:

  • 杀掉进程
  • 或修改端口

2. 模块找不到

Error: Cannot find module 'xxx'

排查:

npm ls xxx
npm install

注意:

  • 是否用了 sudo npm
  • 是否 node 版本不一致(nvm)

3. 权限问题

EACCES: permission denied

常见于:

  • 写日志文件
  • 绑定 80/443 端口

解决:

sudo chown -R user:user /path

或不用 root 跑 80 端口(用 nginx 反代)


4. 环境变量缺失

process.env.DB_URL is undefined

排查:

printenv | grep DB

检查:

  • .env 文件
  • systemd 的 Environment=
  • PM2 的 ecosystem.config.js

5. 崩溃但没日志

在入口加:

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

三、调试技巧

1. 看 Node 版本

node -v
npm -v

2. 本地复现

NODE_ENV=production node app.js

3. 开启调试

DEBUG=* node app.js

4. 用 strace(系统级)

strace -f node app.js

四、推荐排错顺序(实战)

  1. 看服务状态
    systemctl status your-service
    
  2. 看日志
    journalctl -u your-service -n 100
    
  3. 看端口 / 进程
  4. 看 .env / 配置
  5. 本地跑同样命令

如果你愿意,可以把具体报错日志贴出来(脱敏后),我可以直接帮你定位问题。

0 踩