Ubuntu Node.js日志中错误代码代表什么
导读:Ubuntu Node.js 日志常见错误代码含义与处理 快速定位与查看日志 使用 journalctl 查看服务日志(适用于 systemd 管理的服务):journalctl -u your-node-service --no-pag...
Ubuntu Node.js 日志常见错误代码含义与处理
快速定位与查看日志
- 使用 journalctl 查看服务日志(适用于 systemd 管理的服务):journalctl -u your-node-service --no-pager --since “10 minutes ago”
- 跟踪文件日志:tail -f logs/app.log
- 使用 PM2 管理时:pm2 logs your-app;筛选警告:pm2 logs your-app --lines 50 | grep WARN
- 在日志中快速检索错误:grep -i “error” logs/error.log;或按关键字定位:grep ‘ETIMEDOUT’ app.log
- 日志通常位于项目目录的 logs/,或系统日志 /var/log/syslog、/var/log/messages。
常见错误代码含义与修复
| 错误码 | 含义 | 常见触发场景 | 快速修复 |
|---|---|---|---|
| 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 分析泄漏并优化代码 |
实用排查命令清单
- 端口占用:sudo lsof -i :3000;sudo kill -9
- 实时看日志:tail -f logs/app.log;或 journalctl -u your-node-service -f
- 检索关键字:grep -i “error” logs/error.log;grep ‘ECONNREFUSED|ETIMEDOUT’ app.log
- 依赖与版本:node -v;npm outdated;npm update
- DNS 诊断:nslookup your.domain;dig your.domain
- 内存问题:node --max-old-space-size=4096 your-app.js;clinic doctor – node your-app.js
处理建议与注意事项
- 不要长期用 kill -9,优先尝试正常关闭(如进程收到 SIGTERM 后清理再退出),减少数据损坏风险。
- 生产环境避免使用 root 直接运行 Node.js;如需绑定 80/443,用反向代理(如 Nginx)或 systemd 的权限降权配置。
- 将“未处理的 Promise 拒绝”和“监听器泄漏”当作稳定性问题优先修复,避免线上雪崩。
- 对外部依赖设置合理的超时与重试,并在日志中记录请求上下文(如 trace_id),便于追踪。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Node.js日志中错误代码代表什么
本文地址: https://pptw.com/jishu/749812.html
