Debian 环境下 JS 日志的关键错误码与异常分类
在 Debian 系统上处理 Ja vaScript 应用时,排查日志是项基本功。但首先得明确一点:Debian 系统本身并没有一个统一的 JS 错误码标准。我们通常所说的“关键错误码”,主要来自两大阵营。一是 Ja vaScript 语言运行时自己抛出的标准异常名称,比如 SyntaxError;二是 Node.js 运行时与系统交互时产生的系统或网络错误码,比如 ECONNREFUSED。对于前端 JS,错误大多躺在浏览器控制台里;而在服务器端,我们则主要与 Node.js 应用自身的日志,或者 systemd 管理的服务日志(用 journalctl -u your-app 查看)打交道。
Ja vaScript 运行时异常名称
这类错误是代码本身的“语法病”或“逻辑病”,运行时引擎会直接喊停。
- SyntaxError(语法错误):代码结构出了问题,比如括号或引号不配对、使用了非法标识符。这好比写文章时句子没写完,引擎根本读不下去。
- ReferenceError(引用错误):试图访问一个根本不存在的变量。简单说,就是叫了一个没到场的人的名字。
- TypeError(类型错误):对某个值执行了它不支持的操作。最常见的例子,就是试图从
undefined或null身上读取属性。 - RangeError(范围错误):给的数值或参数超出了允许的范围。典型的例子是递归调用层数太深,导致调用栈溢出。
- URIError(URI错误):在使用
encodeURI、decodeURI等函数处理 URI 时,传入了格式非法的字符串。 - EvalError(eval错误):与
eval()函数使用不当有关。不过在现代 Ja vaScript 开发中,这个错误已经比较少见。
Node.js 常见系统错误码
当你的 Node.js 应用需要和操作系统、网络、文件系统打交道时,就可能遇到这些以“E”开头的错误码。它们更像是执行环境发出的“状况报告”。
- ECONNREFUSED(连接被拒绝):试图连接的目标主机明确拒绝了请求。通常意味着对方服务根本没在监听那个端口,或者中间有防火墙阻隔。
- ETIMEDOUT(操作超时):连接或某个网络操作在指定时间内没有完成。可能是网络抖动,也可能是对端服务响应太慢甚至无响应。
- EADDRINUSE(地址已被使用):试图绑定的端口已经被其他进程占用了。经常发生在服务重复启动,或者旧进程没有完全退出的情况下。
- 其他常见错误码:像
EPIPE(管道破裂,常见于写入时对端已关闭)、ENOTFOUND(DNS 解析失败)、ECONNRESET(连接被对端重置)等,在网络请求、流操作或子进程通信中都有可能碰到。
快速定位与排查命令
知道了错误是什么,下一步就是快速找到它并解决。下面这套组合拳在 Debian 上很管用。
- 查看服务日志:对于 systemd 管理的服务,使用
journalctl -u your-node-app.service -f可以实时跟踪日志。如果应用自己写了日志文件,比如/var/log/yourapp.log,直接查看即可。 - 关键字检索:面对庞大的日志文件,可以用 grep 快速过滤。例如:
grep -i 'SyntaxError|TypeError|ECONNREFUSED' /var/log/yourapp.log,能帮你迅速定位高频异常。 - 端口占用排查:遇到
EADDRINUSE怎么办?用ss -tulpen | grep <端口>或者lsof -iTCP:<端口> -sTCP:LISTEN命令,能准确找到是哪个进程占用了端口,然后对症下药(结束进程或更换端口)。 - 修复后重启服务:问题修复后,别忘了让改动生效。执行
sudo systemctl restart your-app来重启你的服务。
