在 Ubuntu 上排查 Node.js 日志和错误,一般可以按下面几个步骤来:
console.log / console.error)logs/error.log)如果你用以下方式运行 Node.js:
journalctl -u your-node-service.service -f
查看最近错误:
journalctl -u your-node-service.service -p err
pm2 logs
pm2 logs app-name
pm2 describe app-name
docker logs container_name
docker logs -f container_name
错误示例:
Error: listen EADDRINUSE :::3000
排查:
sudo lsof -i:3000
# 或
sudo netstat -tunlp | grep 3000
解决:
Error: Cannot find module 'xxx'
排查:
npm ls xxx
npm install
注意:
sudo npmEACCES: permission denied
常见于:
解决:
sudo chown -R user:user /path
或不用 root 跑 80 端口(用 nginx 反代)
process.env.DB_URL is undefined
排查:
printenv | grep DB
检查:
.env 文件Environment=ecosystem.config.js在入口加:
process.on('uncaughtException', e => {
console.error('uncaught', e);
});
process.on('unhandledRejection', e => {
console.error('unhandled', e);
});
node -v
npm -v
NODE_ENV=production node app.js
DEBUG=* node app.js
strace -f node app.js
systemctl status your-service
journalctl -u your-service -n 100
.env / 配置如果你愿意,可以把具体报错日志贴出来(脱敏后),我可以直接帮你定位问题。