在 Debian 上定位 Node.js 日志和错误,可以按下面几个层次来做。
不同运行方式,日志位置完全不同。
node app.js
stderrnode app.js > app.log 2>&1
pm2 logs
pm2 logs appname
日志默认在:
~/.pm2/logs/
例如:
~/.pm2/logs/appname-error.log
~/.pm2/logs/appname-out.log
查看服务名:
systemctl list-units | grep node
查看日志:
journalctl -u yourapp.service -f
或只看错误:
journalctl -u yourapp.service -p err
示例:
Error: Cannot find module 'express'
解决:
npm install
node -v
npm -v
TypeError: Cannot read property 'x' of undefined
定位:
NODE_ENV=development node app.js
EADDRINUSE: address already in use :::3000
查找占用:
sudo lsof -i:3000
# 或
sudo ss -tulpn | grep 3000
cat /var/log/syslog
grep node /var/log/syslog
journalctl -xe
journalctl | grep node
const winston = require('winston');
process.on('uncaughtException', e => {
console.error('uncaughtException', e);
});
process.on('unhandledRejection', e => {
console.error('unhandledRejection', e);
});
NODE_DEBUG 或 --trace-warnings如果你愿意,可以把具体报错信息或**运行方式(PM2 / systemd / 直接 node)**发出来,我可以帮你精确定位。