以下列表是不完整的,但列举了编写 Node.js 程序时会遇到的一些常见的系统错误。 详细的列表可从 [errno(3) 参考手册][errno(3) man page]找到。

    • EACCES (拒绝访问): 试图以被一个文件的访问权限禁止的方式访问一个文件。

    • EADDRINUSE (地址已被使用): 试图绑定一个服务器([net]、[http] 或 [https])到本地地址,但因另一个本地系统的服务器已占用了该地址而导致失败。

    • ECONNREFUSED (连接被拒绝): 无法连接,因为目标机器积极拒绝。 这通常是因为试图连接到外部主机上的弃用的服务。

    • ECONNRESET (连接被重置): 一个连接被强行关闭。 这通常是因为连接到远程 socket 超时或重启。 常发生于 [http] 和 [net] 模块。

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

    • EISDIR (是一个目录): 一个操作要求一个文件,但给定的路径是一个目录。

    • EMFILE (系统打开了太多文件): 已达到系统[文件描述符][file descriptors]允许的最大数量,且描述符的请求不能被满足直到至少关闭其中一个。 当一次并行打开多个文件时会发生这个错误,尤其是在进程的文件描述限制数量较低的操作系统(如 macOS)。 要解决这个限制,可在运行 Node.js 进程的同一 shell 中运行 ulimit -n 2048

    • ENOENT (无此文件或目录): 通常是由 [fs] 操作引起的,表明指定的路径不存在。给定的路径找不到文件或目录。

    • ENOTDIR (不是一个目录): 给定的路径虽然存在,但不是一个目录。 通常是由 [fs.readdir] 引起的。

    • ENOTEMPTY (目录非空): 一个操作的目标是一个非空的目录,而要求的是一个空目录,通常是由 [fs.unlink] 引起的。

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

    • EPERM (操作不被允许): 试图执行一个需要更高权限的操作。

    • EPIPE (管道损坏): 写入一个管道、socket 或 FIFO 时没有进程读取数据。 常见于 [net] 和 [http] 层,表明远端要写入的流已被关闭。

    • ETIMEDOUT (操作超时): 一个连接或发送的请求失败,因为连接方在一段时间后没有做出合适的响应。 常见于 [http] 或 [net]。 往往标志着 socket.end() 没有被正确地调用。