Ubuntu 环境下 JavaScript 日志错误的定位与修复
一、快速定位路径
sudo journalctl -u your-service-name -f;实时跟踪日志:tail -f /var/log/your-app.log。/var/log/syslog、/var/log/nginx/error.log、/var/log/apache2/error.log。grep "ERROR" /var/log/syslog、less/awk/sed 做关键字与字段筛选。二、常见错误与修复对照表
| 错误类型 | 典型日志关键词 | 快速修复 |
|---|---|---|
| SyntaxError | Unexpected token、缺少括号/引号 | 按报错行号修复语法;用 ESLint 预检 |
| ReferenceError | is not defined | 检查变量/函数是否已声明与导入 |
| TypeError | Cannot read property X of undefined、is not a function | 增加空值判断与类型校验 |
| RangeError | Maximum call stack size exceeded、Invalid array length | 检查递归终止条件与数组/数值边界 |
| URIError | URI malformed | 校验 encodeURI/decodeURI 参数 |
| Module not found | Cannot find module ‘xxx’ | 确认 node_modules 安装与 NODE_PATH/相对路径 |
| EADDRINUSE | address already in use :::3000 | 更换端口或结束占用进程:sudo lsof -i:3000 → kill <PID> |
| EACCES | permission denied | 修正文件/目录权限或以合适用户运行 |
| 内存不足/超限 | JavaScript heap out of memory | 优化内存或提升上限:node --max-old-space-size=4096 app.js |
| 连接超时 | connect ETIMEDOUT / ECONNREFUSED | 检查目标服务可达性、网络与超时配置 |
三、高频场景的处置步骤
journalctl -u your-service -f 或 tail -f 查看最新日志;2) 若为 EADDRINUSE,释放端口或改端口;3) 若为 EACCES,调整权限或以具备权限的用户运行;4) 若提示内存不足,先优化算法/依赖,再考虑 --max-old-space-size 提升堆上限;5) 修复后重启:sudo systemctl restart your-service。top/htop(CPU/内存)、free -m、df -h(磁盘);2) 依赖与环境:确认 Node.js/npm 版本与 PATH、必要环境变量;3) 必要时升级依赖并重启服务。四、日志与监控最佳实践
tail -f 观察一段时间,确认无新 ERROR/WARN 再视为恢复。五、最小可行排错命令清单
sudo journalctl -u your-service -ftail -f /var/log/your-app.logsudo lsof -i:3000 或 ss -ltnp | grep 3000top/htop、free -m、df -hgrep -i "error\|exception\|fail" /var/log/syslog | tail -50sudo systemctl restart your-service