Node.js 在 Linux 上运行时日志报错,原因非常多,不能一概而论,通常可以按下面几类来分析。你如果愿意贴具体报错信息,我可以精确定位。
下面先给你一个常见原因清单 + 排查思路,基本覆盖 90% 的情况。
Linux 对文件、端口、进程权限管得很严。
典型报错:
EACCESpermission deniedcannot write to log file常见场景:
root 启动,后来用普通用户跑解决:
# 查看日志目录权限
ls -ld /var/log/myapp
# 修改权限
sudo chown -R appuser:appuser /var/log/myapp
sudo chmod 755 /var/log/myapp
Node.js 不会自动创建目录。
报错:
ENOENT: no such file or directory, open '/var/log/xxx/app.log'
解决:
const fs = require('fs');
fs.mkdirSync('/var/log/xxx', { recursive: true });
Linux 上很常见但容易忽略。
检查:
df -h
df -i
现象:
本地能跑,Linux 报错。
❌ 错误:
' C:\\logs\\app.log'
✅ 正确:
'/var/log/app.log'
常用日志库:
winstonpinolog4js常见错误:
示例(winston):
transports: [
new winston.transports.File({
filename: '/var/log/app.log'
})
]
node app.js ✅systemd / pm2 ❌原因:
排查:
systemctl status yourapp
journalctl -u yourapp
不要只看一行:
node app.js 2>&1 | tee error.log
Node 报错通常会有:
at Object.<anonymous> (/app/index.js:12:3)
const fs = require('fs');
fs.writeFileSync('/var/log/test.log', 'hello');
请把以下信息贴出来(越全越好):
如果你愿意,可以直接把报错贴出来,我帮你一行一行分析 ✅