Ubuntu Node.js 日志常见错误代码含义与处理
快速定位与查看日志
常见错误代码含义与修复
| 错误码 | 含义 | 常见触发场景 | 快速修复 |
|---|---|---|---|
| EADDRINUSE | 地址已被占用 | 启动服务时端口被其他进程占用(如端口 3000、443) | 查占用:sudo lsof -i :端口;释放:sudo kill -9 |
| EACCES | 权限被拒绝 | 绑定低位端口(如 80/443)无 root 权限;写日志文件或读取配置无权限 | 以具备权限的用户运行(如 sudo);改用高端口(≥1024);修正文件/目录权限 |
| EADDRNOTAVAIL | 地址不可用 | 绑定到本机不存在或未启用的 IP | 使用有效 IP(如 0.0.0.0 或本机局域网 IP);检查网络配置 |
| ECONNREFUSED | 连接被拒绝 | 连接的目标主机端口未监听或被防火墙阻断 | 确认目标服务已启动并监听;检查云安全组/防火墙 |
| ETIMEDOUT | 连接超时 | 访问远程服务或数据库超时 | 检查网络连通性;适当增加超时;排查对端负载/网络质量 |
| ENOTFOUND | DNS 解析失败 | 域名无法解析 | 核对域名拼写;检查 DNS 配置(/etc/resolv.conf);测试 nslookup/dig |
| ENOENT | 文件或目录不存在 | 读取配置、模板、静态资源路径错误 | 校验路径是否正确;确认文件已部署;使用绝对路径或 path.join |
| UnhandledPromiseRejectionWarning | 未处理的 Promise 拒绝 | async/await 或 Promise 缺少 .catch() | 给每个 Promise 加 .catch();用 try-catch;全局监听:process.on(‘unhandledRejection’) |
| MaxListenersExceededWarning | 监听器泄漏风险 | 重复添加事件监听未移除 | 移除不再需要的监听器;必要时 emitter.setMaxListeners() |
| ENOMEM | 内存不足 | 堆内存超限、内存泄漏 | 启动时提升内存上限:node --max-old-space-size=4096 app.js;用 clinic/heapdump 分析泄漏并优化代码 |
实用排查命令清单
处理建议与注意事项