Ubuntu Nodejs错误怎么排查
导读:Ubuntu 上 Node.js 错误排查清单 一 快速定位与通用步骤 明确运行方式与环境:是直接运行 node app.js、通过 npm start、还是 PM2/Systemd 托管;确认 Node 与 npm 版本一致(命令:no...
Ubuntu 上 Node.js 错误排查清单
一 快速定位与通用步骤
- 明确运行方式与环境:是直接运行 node app.js、通过 npm start、还是 PM2/Systemd 托管;确认 Node 与 npm 版本一致(命令:node -v、npm -v)。
- 先看“哪里报错”:在终端/日志中找到文件名与行号;必要时用 node inspect app.js 或 node --inspect-brk app.js 进入调试,配合 VS Code 断点。
- 依赖与语法:执行 npm install 还原依赖;用 ESLint 或简单 console.log/console.error 打印关键变量与执行流。
- 运行期问题:优先检查端口占用、权限、路径、网络四类高频问题(见第二部分)。
- 日志与告警:区分错误 Error 与警告 Warning;对 Warning 也要处理,避免累积成故障(见第三部分)。
二 常见错误与修复命令
| 症状 | 典型错误信息 | 快速排查 | 修复建议 |
|---|---|---|---|
| 端口被占用 | Error: listen EADDRINUSE :::3000 | lsof -i :3000 或 ss -ltnp | kill -9 或改用未占用端口 |
| 模块找不到 | Error: Cannot find module ‘xxx’ | 检查拼写、相对/绝对路径 | npm install xxx;确认 node_modules 存在 |
| 权限不足 | Error: EACCES permission denied | 查看目录/文件权限 | 调整权限或以合适用户运行;避免 1024 以下端口直接用非 root |
| 地址不可用 | Error: EADDRNOTAVAIL | 核对绑定 IP | 服务器对外访问用 0.0.0.0;不要绑定不存在的网卡 IP |
| 文件不存在 | Error: ENOENT no such file or directory | 检查相对路径与工作目录 | 使用绝对路径或修正相对路径 |
| 连接超时 | Error: ETIMEDOUT | 网络连通性、目标服务状态 | 检查目标主机/端口、重试与超时设置 |
| 日志写入失败 | Error: EACCES open ‘/var/log/node.log’ | 查看日志目录权限 | 改为可写目录或调整权限 |
| PM2 停不掉 | pm2 stop 后进程仍在 | ps aux | grep node 查残留 |
| 中文乱码/EIO | Error: write EIO | 文件编码与终端编码 | 将源文件保存为 UTF-8 再运行 |
三 日志与警告分析
- 查看与实时跟踪
- 原生:tail -f logs/app.log;服务:journalctl -u your-node-service -f
- PM2:pm2 logs;筛选警告:pm2 logs your-app --lines 50 | grep WARN
- 典型 Warning 与对策
- DeprecationWarning:如 Buffer() 已弃用 → 改用 Buffer.alloc()/Buffer.from();同步升级依赖(npm outdated / npm update)。
- UnhandledPromiseRejectionWarning:Promise 没有 catch → 给每个 Promise 加 .catch();在入口加全局监听:process.on(‘unhandledRejection’, …)。
- MaxListenersExceededWarning:监听器泄漏 → 移除重复监听或 emitter.setMaxListeners()。
- ENOMEM / heap out of memory:内存不足 → 启动时提升上限:node --max-old-space-size=4096 app.js;用 clinic/heapdump 定位泄漏。
四 环境与安装问题
- 版本与安装方式
- 使用 apt 安装的版本可能非最新 LTS;需要新版本时可用 NodeSource PPA 或 nvm 管理多版本。
- nvm 未找到
- 确认 ~/.bashrc 或 ~/.zshrc 已写入 nvm 初始化脚本并执行 source 重载配置。
- 安装阶段域名解析失败
- 如遇 raw.githubusercontent.com 解析失败,可临时在 /etc/hosts 添加对应记录。
- 安全与合规
- 关注 Node.js 安全更新,及时升级到包含修复的版本。
五 网络与访问问题
- 防火墙放行
- Ubuntu 使用 UFW:sudo ufw allow 3000/tcp(按需替换端口)。
- 监听地址绑定
- 仅本机访问:127.0.0.1;对外访问:0.0.0.0(示例:server.listen(3000, ‘0.0.0.0’))。
- 外部访问不通
- 同时检查云服务器安全组/防火墙与监听地址是否为 0.0.0.0。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu Nodejs错误怎么排查
本文地址: https://pptw.com/jishu/757090.html
