温馨提示×

nodejs linux日志报错怎么办

小樊
40
2026-09-08 13:49:27
栏目: 编程语言

在 Linux 上运行 Node.js 服务时日志报错很常见,处理方式通常是「先看日志 → 定位错误类型 → 逐步排查 → 修复/规避」。下面给你一套实用排查流程,适合大多数情况。


一、先确认“日志从哪来”

常见日志来源:

  1. 终端直接报错
node app.js
  1. PM2 日志
pm2 logs
pm2 logs app-name
  1. 系统服务(systemd)
journalctl -u your-node-service -f
  1. Docker
docker logs -f container_id
  1. 应用自己写的日志(winston / pino / log4js)
tail -f logs/error.log

二、看错误“类型”而不是看字数

1️⃣ 启动就报错(最常见)

示例:

Error: Cannot find module 'express'

✅ 解决:

npm install

2️⃣ 端口被占用

EADDRINUSE: address already in use :::3000

✅ 查占用:

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

✅ 解决:

  • 换端口
  • 杀进程:kill -9 PID

3️⃣ 权限问题(Linux 特有)

EACCES: permission denied

✅ 常见原因:

  • 读/写文件
  • 绑定 80/443 端口

✅ 解决:

sudo chown -R user:user project
# 或
sudo setcap cap_net_bind_service=+ep node

4️⃣ 内存溢出(OOM)

FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed

✅ 解决:

  • 增加内存
node --max-old-space-size=2048 app.js
  • 检查内存泄漏(循环引用、大对象)

5️⃣ 未捕获异常 / Promise 报错

UnhandledPromiseRejectionWarning

✅ 必须加:

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

三、快速定位“哪一行出错”

日志里通常有:

at Object.<anonymous> (/app/server.js:23:10)

重点看:

  • 文件名
  • 行号
  • 调用栈最上面的一条

四、Linux 环境常见坑(重点)

问题 原因 解决
node 版本过低 用了新语法 nvm use 18
环境变量没加载 .env 未读取 source .env
路径大小写 Linux 区分 检查 import 路径
时区错误 日志时间乱 tzselect
文件描述符耗尽 高并发 ulimit -n 65535

五、你可以直接把错误贴出来

如果你愿意,可以把完整报错日志贴出来(或截图关键部分),我可以帮你:

✅ 精准判断错误原因
✅ 给修复代码
✅ 判断是否 Linux / Node 特有

你可以直接发:

报错内容 + node 版本 + 启动方式(pm2 / docker / 直接 node)

0