在 Linux 环境下定位 JS(JavaScript)日志错误,通常分为 前端 JS 和 后端 JS(Node.js) 两种情况。下面按场景系统说明。
F12 → Console / Network / Sources
适合:本地调试、测试环境
前端错误通常不会直接显示在服务器日志里,需要主动上报:
window.onerror = function (msg, url, line, col, error) {
fetch('/log', {
method: 'POST',
body: JSON.stringify({ msg, url, line, col, stack: error.stack })
})
}
然后在 Linux 上查:
tail -f /var/log/nginx/access.log
tail -f /var/log/app/error.log
如果直接用 node 启动:
node app.js
后台运行(推荐):
pm2 start app.js
pm2 logs
或:
nohup node app.js > app.log 2>&1 &
tail -f app.log
| 场景 | 路径 |
|---|---|
| Nginx 反向代理 | /var/log/nginx/error.log |
| PM2 | ~/.pm2/logs/ |
| Docker | docker logs 容器名 |
| Systemd | journalctl -u node-app |
process.on('uncaughtException', err => {
console.error('UNCAUGHT:', err)
})
process.on('unhandledRejection', err => {
console.error('UNHANDLED:', err)
})
npm i winston
const winston = require('winston')
winston.error('DB error', { stack: err.stack })
# 实时查看日志
tail -f xxx.log
# 搜索错误关键字
grep -i error xxx.log
# 查看最近报错
journalctl -xe
# 查看进程
ps aux | grep node
如果你能补充:
我可以给你更精准的定位方案。