在 Linux 环境下“定位 JS 错误日志”,通常分 前端 JS 和 后端 JS(Node.js) 两种情况。下面给你一套实用排查思路。
如果你是直接运行:
node app.js
错误一般会打印在终端。
如果是后台运行:
node app.js > app.log 2>&1 &
查看日志:
tail -f app.log
pm2 logs
pm2 logs app_name
pm2 error
错误日志默认在:
~/.pm2/logs/
journalctl -u your-node-service -f
典型错误示例:
TypeError: Cannot read property 'x' of undefined
at app.js:23:10
重点看:
node --trace-warnings app.js
node --stack-trace-limit=100 app.js
前端 JS 错误 不会直接出现在 Linux 服务器日志里,需要通过以下方式收集:
tail -f /var/log/nginx/access.log
看不到 JS 报错内容。
在页面中加入:
window.onerror = function(msg, url, line, col, error) {
fetch('/log/js-error', {
method: 'POST',
body: JSON.stringify({ msg, url, line, col, stack: error?.stack })
});
};
后端(Node)接收并写入日志文件。
npm install @sentry/browser
前端错误自动上报到 Sentry 后台。
grep -R "TypeError" /path/to/logs
grep -R "undefined" ~/.pm2/logs
journalctl --since "10 min ago"
node -e "require('./app.js')"
或:
npx stacktrace-ninja app.js:23:10
ReferenceError:变量未定义TypeError:类型错误SyntaxError:语法错误RangeError:递归过深如果你能补充:
我可以直接帮你精准定位。