常见系统错误


【Common system errors】

这是一个在编写 Node.js 程序时常遇到的系统错误列表。有关完整列表,请参见 errno(3) 手册页

【This is a list of system errors commonly-encountered when writing a Node.js program. For a comprehensive list, see the errno(3) man page.】

  • EACCES(权限被拒绝):尝试以文件访问权限不允许的方式访问文件。

  • EADDRINUSE(地址已被使用):尝试将服务器(nethttphttps)绑定到本地地址时失败,因为本地系统上的另一个服务器已占用该地址。

  • ECONNREFUSED(连接被拒绝):无法建立连接,因为目标机器主动拒绝了连接。这通常是由于尝试连接到目标主机上处于非活动状态的服务导致的。

  • ECONNRESET(连接被对方重置):连接被对方强制关闭。通常是由于远程套接字的连接因超时或重启而丢失导致的。通常在 httpnet 模块中会遇到。

  • EEXIST(文件已存在):操作的目标文件已存在,而该操作要求目标文件不存在。

  • EISDIR(是一个目录):操作本应针对文件,但给定的路径名是一个目录。

  • EMFILE(系统中打开的文件过多):系统中可允许的 文件描述符 数量已达到上限,在至少关闭一个文件之前,无法处理更多文件描述符的请求。当同时并行打开许多文件时会遇到此问题,尤其是在文件描述符限制较低的系统(特别是 macOS)中。若要解决限制过低的问题,请在将运行 Node.js 进程的同一 shell 中执行 ulimit -n 2048

  • ENOENT(没有这样的文件或目录):通常由 fs 操作引发,用于表示指定路径的某个组件不存在。无法通过给定路径找到任何实体(文件或目录)。

  • ENOTDIR(不是目录):给定路径名的某个组件存在,但并非预期的目录。通常由 fs.readdir 引发。

  • ENOTEMPTY(目录非空):操作的目标是包含条目的目录,而该操作通常需要一个空目录,通常是 fs.unlink

  • ENOTFOUND(DNS 查询失败):表示 EAI_NODATAEAI_NONAME 的 DNS 失败。这不是标准的 POSIX 错误。

  • EPERM(操作不允许):尝试执行需要提升权限的操作。

  • EPIPE(管道断裂):对没有进程读取数据的管道、套接字或 FIFO 进行写操作。通常在 nethttp 层遇到,表明写入的流的远端已被关闭。

  • ETIMEDOUT(操作超时):连接或发送请求失败,因为连接的另一方在一段时间后没有正确响应。通常由 httpnet 遇到。通常表示 socket.end() 没有被正确调用。