在 Ubuntu 上定位 Node.js 报错,通常可以按下面几个层次来做:看错误本身 → 看运行环境 → 看日志和堆栈 → 用工具深入。
Node.js 报错一般分几类:
语法错误(SyntaxError)
SyntaxError: Unexpected token }
at Object.<anonymous> (/home/user/app.js:10:2)
运行时错误(TypeError / ReferenceError 等)
stack trace 中最靠近业务代码的一行TypeError: Cannot read property 'x' of undefined
at app.get (/home/user/app.js:25:15)
模块找不到(Cannot find module)
npm installNODE_PATH 不对node -v
npm -v
which node
which npm
如果你用了 nvm,可能实际是:
~/.nvm/versions/node/...
node 很老(v10 以下)apt install nodejs 和 npm 版本不匹配node app.js
错误会直接打印在终端
pm2 logs
pm2 show <id>
journalctl -u your-node-service -f
process.on('uncaughtException', e => {
console.error(e);
});
node --trace-warnings app.js
node --stack-trace-limit=100 app.js
DEBUG=* node app.js
node --inspect app.js
然后用 Chrome chrome://inspect
node --prof app.js
node --inspect-brk app.js
winstonpinodebug| 现象 | 可能原因 |
|---|---|
| command not found: node | 没装 / PATH 错 |
| EACCES | 权限问题,别用 sudo npm |
| port in use | 端口被占 |
| 突然退出 | 未捕获异常 |
| CPU 100% | 死循环 / 正则灾难 |
如果你愿意,可以把具体报错信息或运行方式贴出来,我可以直接帮你定位是哪一类问题、怎么改。