温馨提示×

Debian系统JS日志中常见的错误有哪些

小樊
35
2026-01-01 01:05:52
栏目: 编程语言

Debian环境下常见的JS错误类型与排查要点

一 前端与Node.js通用错误

  • SyntaxError:语法错误,如括号/引号不匹配缺少分号、使用了保留字等。
  • ReferenceError:引用未声明变量,例如访问了尚未定义的 x
  • TypeError:类型不符,如对字符串执行数值运算,或访问 undefined/null 的属性。
  • RangeError:数值越界,如创建长度为负数的数组
  • TypeError: Cannot read property ‘x’ of undefined:常见于对象未初始化或异步数据未返回就访问属性。
  • TypeError: Cannot set property ‘x’ of undefined:同上,尝试给 undefined/null 设置属性。
  • RangeError: Maximum call stack size exceeded:递归缺少终止条件或调用层级过深。
  • SyntaxError: Identifier ‘x’ has already been declared:使用 let/const 重复声明同一标识符。
  • SyntaxError: Invalid or unexpected token:非法字符、模板字符串/引号使用不当等。
  • SyntaxError: Unexpected end of input:代码块未闭合,如缺少 })
    以上错误在前端浏览器与Node.js运行时均常见,需结合堆栈与行号定位。

二 Node.js运行时与资源类错误

  • 未处理的异常(Unhandled Exception):未捕获的同步异常会导致进程退出。
  • 未处理的 Promise 拒绝(UnhandledPromiseRejectionWarning/UnhandledPromiseRejection):异步错误未被 .catch()try/catch 捕获。
  • 流未监听 error 事件(Unhandled stream error):对 fs.createReadStream、HTTP 请求流等未绑定 error 监听,错误会冒泡并可能崩溃进程。
  • JavaScript 堆内存不足(JavaScript heap out of memory):处理大数据量内存泄漏或默认内存限制不足时出现。
  • 环境/版本不兼容:不同 Node.js 版本或依赖导致 API 行为差异。
  • 网络与通信错误:如 ECONNRESETETIMEDOUT、连接被中断、请求超时等。
  • 资源消耗过大:高频日志、未限流导致磁盘空间内存压力上升。
    上述多发生于服务器端 Node.js 应用,需结合日志与监控定位。

三 日志定位与快速排查

  • 确认日志位置
    • 系统与服务日志:/var/log/syslogjournalctl -u <service_name>
    • Web 服务器:/var/log/nginx/error.log/var/log/apache2/error.log
    • 应用自定义日志:如 /var/log/myapp/ 或项目配置路径。
  • 查看与分析
    • 实时查看:tail -f /var/log/syslogjournalctl -f
    • 关键字检索:搜索 ERRORExceptionFailed 等;关注时间戳堆栈
    • 结构化日志:若为 JSON,使用 jq 解析字段。
  • 前端调试:使用 Chrome DevTools 的 Console/Sources 定位行号与调用栈。
  • Node.js 调试:使用 node --inspect 配合调试器,或在代码中加入更细粒度的日志与 try/catch
  • 修复与回归:在测试环境复现并修复,回滚或灰度发布,持续监控确认恢复。

四 高频错误速查表

错误类型 典型触发 快速修复
ReferenceError: x is not defined 使用未声明变量 在使用前声明或检查作用域与依赖加载顺序
TypeError: Cannot read property ‘x’ of undefined 访问未初始化对象/异步数据未到位 增加空值判断可选链;确保数据就绪后再访问
SyntaxError: Unexpected end of input 括号/引号未闭合 检查并补全 { }[ ]’ '" "
RangeError: Maximum call stack size exceeded 递归无终止条件/过深调用 增加终止条件、改用循环尾递归优化
UnhandledPromiseRejection Promise 未 catch 为所有 Promise 加 .catch() 或统一用 try/catch/finally
JavaScript heap out of memory 大数据/内存泄漏/默认内存不足 排查泄漏、分批处理、流式处理;必要时通过 –max-old-space-size 调整内存上限
Unhandled stream error 流未监听 error 为所有 Readable/Writable/Transform 流绑定 error 事件处理器

0