温馨提示×

Ubuntu JS日志中错误码含义解析

小樊
32
2025-12-25 17:24:34
栏目: 编程语言

Ubuntu JS日志错误码含义与排查指南

一 常见JavaScript运行时错误类型与含义

  • SyntaxError:语法解析失败,代码无法运行。常见诱因:缺少引号/括号、缺少逗号、非法关键字等。
  • TypeError:对值的类型执行了不合法操作。常见诱因:调用非函数、访问 undefined 的属性、错误的构造调用。
  • ReferenceError:访问了未声明或不可达的变量。常见诱因:变量未定义、作用域问题、拼写错误。
  • RangeError:数值或参数超出有效范围。常见诱因:数组长度为负、toFixed 参数越界等。
  • URIError:URI 编解码参数非法。常见诱因:decodeURI/encodeURIComponent 传入了 malformed URI。
  • EvalError:eval 使用不当(现代 JS/ES5+ 基本不再抛出)。
  • 补充:Error 为通用错误基类,很多业务或库会派生并附带 code/message/stack 等字段。

二 Node.js常见系统级错误码与含义

  • EADDRINUSE:端口被占用。示例:试图监听 3000/443 时提示 address already in use。
  • EADDRNOTAVAIL:要绑定的 IP 不可用(配置错误或网卡未就绪)。
  • EACCES:权限不足。示例:绑定 1024 以下端口、访问受限文件或目录、写日志文件无权限。
  • ENOENT:路径不存在。示例:require 模块不存在、读取不存在的文件。
  • ETIMEDOUT:网络连接超时。示例:请求外部服务长时间无响应。
  • 处理要点:优先检查端口占用与权限,其次核对文件路径与网络连通性。

三 在Ubuntu上快速定位与解析日志

  • 定位日志位置:应用安装目录的 logs//var/log/ 或配置文件指定的路径。
  • 命令行快速检索:
    • 文本日志:grep -i "ERROR\|SyntaxError\|TypeError" app.log
    • 提取关键字段:awk '{print $1,$2,$NF}' app.log
    • 替换与过滤:sed -n 's/.*ERROR.*/&/p' app.log
  • JSON 日志解析:安装并使用 jq
    • 安装:sudo apt-get install jq
    • 查询:jq 'select(.level=="error") | .message' app.log
  • 集中化分析:部署 ELK Stack(Elasticsearch/Logstash/Kibana)Graylog 做检索与可视化。

四 高频错误快速排查清单

  • 端口占用(如 EADDRINUSE
    • 查进程:lsof -i :3000ss -ltnp | grep :3000
    • 释放端口:kill -9 <PID>(谨慎,先确认业务影响)
  • 模块未找到(Error: Cannot find module ‘xxx’
    • 安装依赖:npm installnpm ci
    • 核对 node_modules 是否完整、工作区/软链是否正确
  • 权限被拒绝(EACCES
    • 非 root 绑定 80/443 时改用高端口或配置 CAP_NET_BIND_SERVICE
    • 检查日志目录与文件的 owner/group/权限
  • 地址不可用(EADDRNOTAVAIL
    • 核对绑定的 IP 是否为本机有效地址(如 0.0.0.0 或具体网卡 IP)
  • 文件不存在(ENOENT
    • 校验配置文件、静态资源、证书与数据文件路径是否正确(相对路径与工作目录相关)
  • 网络超时(ETIMEDOUT
    • 检查目标主机连通性、DNS 解析、代理与防火墙策略,必要时增加 超时时间/重试

五 日志规范化与预防建议

  • 统一日志格式:优先使用 JSON 结构化日志,包含 timestamp、level、message、stack、code、pid、hostname 等字段,便于 jq/ELK 检索与聚合。
  • 全局异常兜底:
    • 进程级:process.on('uncaughtException')process.on('unhandledRejection') 记录并安全退出
    • 浏览器端:监听 window.onerrorunhandledrejection
  • 资源与端口治理:启动时检测端口占用,避免重复绑定;容器化时显式声明端口与重启策略。
  • 权限最小化:服务以最小权限运行,证书与密钥文件权限设为 600/644 并归属正确用户组。
  • 监控与告警:对 ERROR 级别日志、频繁 5xx、异常增长趋势配置阈值告警,缩短 MTTR

0