Linux JS日志中错误码含义
导读:Linux 环境下 JS 日志中的错误码与含义 一 常见 JavaScript 运行时错误类型 SyntaxError 语法错误:代码无法被解析,例如缺少括号、引号或分号。 ReferenceError 引用错误:访问了未声明的变量或属性...
Linux 环境下 JS 日志中的错误码与含义
一 常见 JavaScript 运行时错误类型
- SyntaxError 语法错误:代码无法被解析,例如缺少括号、引号或分号。
- ReferenceError 引用错误:访问了未声明的变量或属性。
- TypeError 类型错误:对值执行了不适当的操作,例如把非函数当函数调用。
- RangeError 范围错误:数值或参数超出允许范围,例如设置数组长度为负数。
- URIError URI 错误:在 encodeURI / decodeURI / encodeURIComponent / decodeURIComponent 中传入了非法字符。
- EvalError Eval 错误:与 eval 使用相关;在现代 ES5+ 环境中已很少见到被实际抛出。
- Error 通用错误:其他未分类错误的基类,常用于自定义错误。
- 异步错误:如 Promise 被拒绝 或 async/await 中抛出的异常。
以上类型在 Ubuntu/Debian 等 Linux 发行版的 Node.js 或前端浏览器控制台日志中均常见。
二 Node.js 常见系统级错误码
- EADDRINUSE address already in use:端口被占用,例如服务尝试监听 :::3000 失败。
- EACCES permission denied:权限不足,常见于绑定低位端口或访问受限资源。
- ENOMEM out of memory:内存不足,进程无法分配所需内存。
- ENOSPC No space left on device:磁盘空间耗尽,日志写入或临时文件创建失败。
- EIO I/O error:底层 I/O 错误,可能由磁盘、文件系统或设备异常引起。
- EBUSY Device or resource busy:设备或资源忙,例如文件被占用无法访问。
- EINVAL Invalid argument:无效参数,传递给系统调用的参数不合法。
- ENOENT No such file or directory:文件或目录不存在,常见于配置、依赖或静态资源缺失。
这些错误码来自操作系统,Node.js 会将其作为异常消息的一部分输出到日志。
三 快速定位与修复建议
- 在日志中精准检索错误关键词:例如使用命令 grep ‘SyntaxError’ /var/log/syslog 或 grep ‘EADDRINUSE’ app.log 快速定位相关行。
- 同步代码用 try-catch 捕获,异步代码用 .catch() 或 try-catch/await 统一处理,必要时记录堆栈与上下文。
- 针对 EADDRINUSE:检查端口占用(如 lsof -iTCP:3000 -sTCP:LISTEN 或 ss -ltnp | grep 3000),释放或更换端口。
- 针对 EACCES:确认运行用户与文件/目录权限,必要时调整权限或以具备权限的用户运行。
- 针对 ENOMEM/ENOSPC:排查内存泄漏或优化内存占用;清理磁盘或扩容存储。
- 针对 ENOENT:核对文件路径、依赖安装与构建产物是否正确。
- 生产环境建议使用结构化日志库(如 Winston、Bunyan)输出错误堆栈、时间戳与请求上下文,便于检索与告警。
四 两类错误码的区别与关联
- JavaScript 错误类型(如 SyntaxError/TypeError)来源于语言运行时,表示代码执行层面的问题,通常包含错误消息与堆栈。
- 系统错误码(如 EADDRINUSE/EACCES/ENOMEM)来源于 Linux 系统调用,Node.js 将其作为异常消息的一部分呈现,表示运行环境层面的问题。
- 二者可能同时出现:例如代码逻辑触发了系统调用,系统返回 EACCES,Node.js 抛出异常并在日志中同时包含 JS 错误类型与系统错误码信息。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux JS日志中错误码含义
本文地址: https://pptw.com/jishu/778290.html
