温馨提示×

Debian JS日志常见问题

小樊
33
2025-12-08 11:07:43
栏目: 编程语言

Debian 环境下 JavaScript 日志常见问题与排查

一 常见错误类型与典型触发

  • SyntaxError:语法不合法,如缺少闭合括号、引号不匹配、非法字符等,常见于构建产物或部署包与运行环境不一致。
  • ReferenceError:访问未声明变量,如 console.log(a)a 未定义。
  • TypeError:对不符合预期类型的值进行操作,如 undefined.id、对 null 取属性。
  • RangeError:数值越界,如 new Array(-20);或递归过深导致 Maximum call stack size exceeded
  • URIError:非法 URI 编码/解码,如错误的 encodeURI/ decodeURI 参数。
  • EvalError:与 eval 使用不当相关,现代环境已较少见。
  • Node.js 场景特有:如 ReferenceError: module is not defined(模块未正确安装或引用方式不当)。

二 日志定位与快速排查

  • 确认运行环境:前端错误多在浏览器 Console;后端 Node.js 错误在应用日志与 stderr/stdout
  • 快速检索错误:在系统或应用日志中按错误类型关键字过滤,例如
    • grep ‘SyntaxError’ /var/log/syslog
    • grep ‘TypeError’ /var/log/your-app.log
  • 读取堆栈信息:定位到具体 文件名:行号:列号,优先修复最近一次提交引入的问题。
  • 复现与最小化:用最小代码片段复现,排除依赖与环境因素。
  • 重启生效:修复后重启相关服务,例如 sudo systemctl restart apache2sudo systemctl restart your-node-service

三 高频场景与修复建议

  • 前端资源加载失败(如 404/NetworkError):检查 publicPathCDN 与反向代理配置,确认打包产物已部署到正确路径。
  • 跨域问题(CORS):服务端添加正确的 Access-Control-Allow-Origin 等响应头,或在前端开发代理中配置。
  • 依赖与版本不一致:确保 node_modulespackage-lock.json 一致,必要时清理后重装(如 rm -rf node_modules && npm install)。
  • 环境变量缺失:检查 .env 或进程环境变量是否加载,尤其是 NODE_ENVPORT、密钥类变量。
  • 异步与未捕获异常:为 Promise 增加 .catch,在 Node.js 使用 process.on(‘unhandledRejection’) / process.on(‘uncaughtException’) 记录并安全退出。
  • 日志规范:统一使用结构化日志(如 JSON),输出 timestamp、level、msg、stack、reqId,便于检索与聚合。
  • 监控与告警:接入 ELK(Elasticsearch, Logstash, Kibana)Prometheus + Grafana,对 Error 级别日志与异常率设置告警。

四 实用命令与配置示例

  • 查看与过滤日志:
    • 实时查看系统日志:tail -f /var/log/syslog | grep --color=auto ‘Error’
    • 按关键字检索应用日志:grep -n ‘TypeError’ /var/log/your-app.log
  • Node.js 最小异常边界示例:
    • process.on(‘unhandledRejection’, (err) => { console.error(‘Unhandled Rejection:’, err.stack || err); process.exit(1); });
    • process.on(‘uncaughtException’, (err) => { console.error(‘Uncaught Exception:’, err.stack || err); process.exit(1); });
  • 重启服务:sudo systemctl restart your-node-service(根据实际服务名替换)。

0