温馨提示×

Linux Node.js日志中的错误码有哪些含义

小樊
36
2025-10-08 19:04:49
栏目: 编程语言

Linux环境下Node.js日志常见错误码及含义

一、系统级错误码(与操作系统交互相关)

  • EACCES(权限错误):当Node.js应用试图访问受限制的资源(如文件、目录或端口)时触发,根本原因是权限设置不足。例如,尝试读取/root/config.json(无root权限)或监听80端口(需root权限)。解决方法:修改资源权限(chmod/chown)或以更高权限运行应用(如sudo node app.js,但不推荐生产环境使用)。
  • EADDRINUSE(地址已被使用):尝试绑定到已被其他进程占用的IP端口组合时发生。例如,启动应用时提示Error: listen EADDRINUSE :::3000,说明3000端口已被占用。解决方法:通过lsof -i :3000查找占用进程,用kill -9 <PID>终止该进程,或更换应用端口(如3001)。
  • ENOENT(无此文件或目录):尝试访问不存在的文件或目录时触发。例如,require('./utils/helper.js')但文件不存在,或fs.readFile('/data/log.txt')/data目录不存在。解决方法:检查文件/目录路径拼写,确保路径正确且存在。
  • ECONNREFUSED(连接被拒绝):尝试连接到目标服务(如数据库、API)时,目标服务未启动、防火墙拦截或URL错误导致。例如,连接mongodb://localhost:27017但MongoDB未启动。解决方法:确认目标服务已启动,检查防火墙设置(如ufw allow 27017),验证连接URL的正确性。
  • ETIMEDOUT(操作超时):操作(如HTTP请求、数据库查询)超过预设时间限制未完成。例如,axios.get('https://api.example.com')因网络延迟或服务器响应慢超时。解决方法:优化网络环境(如检查网线、切换Wi-Fi),增加超时限制(如axios.create({timeout: 10000})设置10秒超时),或排查目标服务性能问题。

二、JavaScript语法/运行时错误(代码逻辑问题)

  • SyntaxError(语法错误):代码不符合JavaScript语法规则导致,是开发阶段最常见的错误之一。例如,缺少括号(if (x { console.log('hi') })、引号不匹配(const str = 'hello)或拼写错误(funtion foo() {})。解决方法:通过代码编辑器的语法检查功能(如VS Code的ESLint插件)快速定位错误位置,修复语法问题。
  • ReferenceError(引用错误):尝试访问未定义的变量或函数时触发。例如,console.log(undefinedVar)undefinedVar未声明)、foo()foo未定义)。解决方法:检查变量/函数名拼写,确保在使用前已正确定义(如const undefinedVar = 'value')。
  • TypeError(类型错误):对不支持的操作数类型执行操作时发生。例如,'hello' + 123(字符串与数字相加,虽JS会隐式转换但某些场景下不合理)、undefined.length(访问undefinedlength属性)。解决方法:检查操作数的数据类型,添加类型判断(如if (typeof num === 'number') { ... })或进行类型转换(如Number(str))。
  • RangeError(范围错误):数值超出允许范围时触发。例如,new Array(-1)(数组长度不能为负数)、Math.pow(2, 1024)(数值过大超出安全整数范围)。解决方法:检查数值计算逻辑,确保数值在合理范围内(如使用Math.min(value, MAX_SAFE_INTEGER)限制最大值)。

三、网络与连接错误(网络交互问题)

  • EADDRNOTAVAIL(地址不可用):尝试绑定到无效或不可用的IP地址时发生。例如,app.listen(3000, '192.168.1.100')192.168.1.100不是本机IP。解决方法:确认绑定的IP地址是本机有效地址(如127.0.0.1或局域网IP),可通过ip a命令查看本机IP。
  • ENETUNREACH(网络不可达):本机与目标地址之间的网络路径不通。例如,连接10.0.0.1:8080但该地址不在同一网络,或路由器故障。解决方法:检查网络配置(如IP地址、子网掩码、网关),测试网络连通性(如ping 10.0.0.1)。
  • ECONNABORTED(连接中止):连接操作因超时或主动中止而失败。例如,客户端发起请求后长时间未收到响应,自动中止连接。解决方法:优化请求处理逻辑(如减少数据传输量),增加客户端超时设置(如axiostimeout选项)。
  • ECONNRESET(连接重置):远程服务器强制关闭连接。例如,服务器因负载过高、崩溃或安全策略(如防火墙)关闭了客户端连接。解决方法:检查服务器状态(如top查看CPU/内存使用率),查看服务器日志定位关闭原因,调整服务器配置(如增加资源、修改防火墙规则)。

0