Node.js 在 CentOS 上的故障排查步骤
一 快速定位与日志收集
tail -f logs/app.log、journalctl -u your-nodejs-service -f。node -v、npm -v、npm install),并核对必要的 环境变量 是否设置。二 常见错误与修复对照表
| 症状/错误码 | 典型原因 | 快速修复 |
|---|---|---|
| EACCES(权限被拒绝) | 绑定低位端口(如 80/443)或目录无读写权限 | 改用 >1024 端口或以具备权限的用户运行;必要时调整目录权限(谨慎) |
| EADDRINUSE(地址已被占用) | 端口被其他进程占用 | 更换端口或结束占用进程:`ss -ltnp |
| ECONNREFUSED(连接被拒绝) | 目标服务未启动、配置错误或防火墙阻断 | 启动目标服务、核对地址与端口、放通防火墙/安全组 |
| Error: listen EACCES | 同上,常见于尝试绑定 80/443 | 使用非特权端口或配置反向代理(如 Nginx) |
| Module not found | 依赖未安装或 NODE_PATH 异常 | 执行 npm install,核对本地/全局模块路径 |
| SyntaxError: Unexpected identifier | Node.js 版本过低 不支持新语法 | 使用 nvm 升级到合适版本 |
| command not found: node/npm | 未安装或 PATH 未包含可执行文件路径 | 安装 Node.js 或修正 PATH:export PATH=/path/to/node/bin:$PATH |
| ENOSPC(inotify 实例上限) | 文件监听过多触发内核上限 | 提升上限:echo "fs.inotify.max_user_watches=524288" >> /etc/sysctl.conf && sysctl -p |
| lib64/libm.so.6: version `glibc_2.27’ not found | glibc 版本过低 | 升级系统或选择兼容的 Node.js 版本(优先方案) |
| ERR_TIMEOUT / ECONNRESET | 网络抖动、下游服务慢或异常、资源不足 | 优化网络与重试策略、检查下游健康、扩容 CPU/内存 |
三 运行环境与依赖检查
npm ci(或 npm install)确保依赖一致;必要时使用 nvm 管理多版本。四 性能与资源瓶颈定位
sar -u 1、sar -r 1)。ps aux | grep node 定位高占用进程;用 nethogs/iftop 查看进程/网卡带宽。五 调试与事后复盘