Node.js v20.7.0 文档


目录

错误#

在 Node.js 中运行的应用通常会遇到四类错误:

  • 标准的 JavaScript 错误,例如 <EvalError><SyntaxError><RangeError><ReferenceError><TypeError><URIError>
  • 由底层操作系统约束触发的系统错误,例如尝试打开不存在的文件或尝试通过关闭的套接字发送数据。
  • 由应用代码触发的用户指定的错误。
  • AssertionError 是一类特殊的错误,当 Node.js 检测到不应该发生的异常逻辑违规时会触发该错误。 这些通常由 node:assert 模块引发。

Node.js 引发的所有 JavaScript 和系统错误都继承自标准 JavaScript <Error> 类,或者是标准 JavaScript <Error> 类的实例,并且保证至少提供该类上可用的属性。

错误冒泡和拦截#

Node.js 支持多种机制来传播和处理应用运行时发生的错误。 如何报告和处理这些错误完全取决于 Error 的类型和调用的 API 的风格。

所有 JavaScript 错误都作为异常处理,使用标准 JavaScript throw 机制立即生成并抛出错误。 这些是使用 JavaScript 语言提供的 try…catch 构造 来处理的。

// Throws with a ReferenceError because z is not defined.
try {
  const m = 1;
  const n = m + z;
} catch (err) {
  // Handle the error here.
} 

对 JavaScript throw 机制的任何使用都会引发必须处理的异常,否则 Node.js 进程将立即退出。

除了少数例外,同步 API(任何不返回 <Promise> 也不接受 callback 函数的阻塞方法,例如 fs.readFileSync)将使用 throw 来报告错误。

异步 API 中发生的错误可能会以多种方式报告:

  • 某些异步方法返回 <Promise>,你应该始终考虑到它可能会被拒绝。 请参阅 --unhandled-rejections 标志,了解进程如何对未处理的 promise 拒绝做出反应。

    const fs = require('fs/promises');
    
    (async () => {
      let data;
      try {
        data = await fs.readFile('a file that does not exist');
      } catch (err) {
        console.error('There was an error reading the file!', err);
        return;
      }
      // Otherwise handle the data
    })(); 
  • 大多数接受 callback 函数的异步方法将接受作为第一个参数传给该函数的 Error 对象。 如果第一个参数不是 null 并且是 Error 的实例,则发生了应该处理的错误。

    const fs = require('node:fs');
    fs.readFile('a file that does not exist', (err, data) => {
      if (err) {
        console.error('There was an error reading the file!', err);
        return;
      }
      // Otherwise handle the data
    }); 
  • 当在 EventEmitter 对象上调用异步方法时,错误可以路由到该对象的 'error' 事件。

    const net = require('node:net');
    const connection = net.connect('localhost');
    
    // Adding an 'error' event handler to a stream:
    connection.on('error', (err) => {
      // If the connection is reset by the server, or if it can't
      // connect at all, or on any sort of error encountered by
      // the connection, the error will be sent here.
      console.error(err);
    });
    
    connection.pipe(process.stdout); 
  • Node.js API 中的一些典型的异步方法可能仍然使用 throw 机制来引发必须使用 try…catch 处理的异常。 没有此类方法的完整列表; 请参考每种方法的文档以确定所需的适当错误处理机制。

'error' 事件机制的使用最常见于 基于流基于事件触发器 API,它们本身代表随时间推移的一系列异步操作(与可能通过或失败的单个操作相反)。

对于所有 EventEmitter 对象,如果没有提供 'error' 事件处理程序,将抛出错误,导致 Node.js 进程报告未捕获的异常并崩溃,除非: 已为 'uncaughtException' 事件注册了处理程序,或者使用了已弃用的 node:domain 模块。

const EventEmitter = require('node:events');
const ee = new EventEmitter();

setImmediate(() => {
  // This will crash the process because no 'error' event
  // handler has been added.
  ee.emit('error', new Error('This will crash'));
}); 

以这种方式产生的错误无法使用 try…catch 拦截,因为它们是在调用代码已经退出后抛出的。

开发者必须参考每种方法的文档,以确定这些方法引发的错误是如何传播的。

类:Error#

通用的 JavaScript <Error> 对象,不表示发生错误的任何具体情况。 Error 对象捕获 "堆栈跟踪",详细说明代码中实例化 Error 的点,并可能提供错误的文本描述。

Node.js 生成的所有错误,包括所有系统和 JavaScript 错误,都将是 Error 类的实例或继承自 Error 类。

new Error(message[, options])#

创建新的 Error 对象并将 error.message 属性设置为提供的文本消息。 如果对象作为 message 传入,则通过调用 String(message) 生成文本消息。 如果提供了 cause 选项,则将其分配给 error.cause 属性。 error.stack 属性将代表代码中调用 new Error() 的点。 堆栈跟踪依赖于 V8 的堆栈跟踪 API。 堆栈跟踪仅扩展到 (a) 同步代码执行的开始,或 (b) 属性 Error.stackTraceLimit 给出的帧数,以较小者为准。

Error.captureStackTrace(targetObject[, constructorOpt])#

targetObject 上创建 .stack 属性,访问时返回表示调用 Error.captureStackTrace() 的代码中的位置的字符串。

const myObject = {};
Error.captureStackTrace(myObject);
myObject.stack;  // Similar to `new Error().stack` 

跟踪的第一行将以 ${myObject.name}: ${myObject.message} 为前缀。

可选的 constructorOpt 参数接受一个函数。 如果给定,则所有 constructorOpt 以上的帧,包括 constructorOpt,都将从生成的堆栈跟踪中省略。

constructorOpt 参数对于向用户隐藏错误生成的实现细节很有用。 例如:

function a() {
  b();
}

function b() {
  c();
}

function c() {
  // Create an error without stack trace to avoid calculating the stack trace twice.
  const { stackTraceLimit } = Error;
  Error.stackTraceLimit = 0;
  const error = new Error();
  Error.stackTraceLimit = stackTraceLimit;

  // Capture the stack trace above function b
  Error.captureStackTrace(error, b); // Neither function c, nor b is included in the stack trace
  throw error;
}

a(); 

Error.stackTraceLimit#

Error.stackTraceLimit 属性指定堆栈跟踪收集的堆栈帧数(无论是由 new Error().stack 还是 Error.captureStackTrace(obj) 生成)。

默认值为 10,但可以设置为任何有效的 JavaScript 数值。 更改将影响值更改后捕获的任何堆栈跟踪。

如果设置为非数字值,或设置为负数,则堆栈跟踪将不会捕获任何帧。

error.cause#

如果存在,则 error.cause 属性是 Error 的根本原因。 当捕获一个错误并抛出一个带有不同消息或代码的新错误以便仍然可以访问原始错误时使用它。

error.cause 属性通常通过调用 new Error(message, { cause }) 来设置。 如果没有提供 cause 选项,则不是构造函数设置的。

此属性允许链接错误。 当序列化 Error 对象时,如果设置了 util.inspect(),则递归序列化 error.cause

const cause = new Error('The remote HTTP server responded with a 500 status');
const symptom = new Error('The message failed to send', { cause });

console.log(symptom);
// Prints:
//   Error: The message failed to send
//       at REPL2:1:17
//       at Script.runInThisContext (node:vm:130:12)
//       ... 7 lines matching cause stack trace ...
//       at [_line] [as _line] (node:internal/readline/interface:886:18) {
//     [cause]: Error: The remote HTTP server responded with a 500 status
//         at REPL1:1:15
//         at Script.runInThisContext (node:vm:130:12)
//         at REPLServer.defaultEval (node:repl:574:29)
//         at bound (node:domain:426:15)
//         at REPLServer.runBound [as eval] (node:domain:437:12)
//         at REPLServer.onLine (node:repl:902:10)
//         at REPLServer.emit (node:events:549:35)
//         at REPLServer.emit (node:domain:482:12)
//         at [_onLine] [as _onLine] (node:internal/readline/interface:425:12)
//         at [_line] [as _line] (node:internal/readline/interface:886:18) 

error.code#

error.code 属性是标识错误类型的字符串标签。 error.code 是识别错误的最稳定方式。 它只会在 Node.js 的主要版本之间发生变化。 相比之下,error.message 字符串可能会在任何版本的 Node.js 之间发生变化。 有关具体代码的详细信息,请参见 Node.js 错误代码

error.message#

error.message 属性是通过调用 new Error(message) 设置的错误的字符串描述。 传递给构造函数的 message 也会出现在 Error 的堆栈跟踪的第一行,但是在创建 Error 对象后更改此属性可能不会更改堆栈跟踪的第一行(例如,当之前读取 error.stack 时 此属性已更改)。

const err = new Error('The message');
console.error(err.message);
// Prints: The message 

error.stack#

error.stack 属性是描述代码中实例化 Error 的点的字符串。

Error: Things keep happening!
   at /home/gbusey/file.js:525:2
   at Frobnicator.refrobulate (/home/gbusey/business-logic.js:424:21)
   at Actor.<anonymous> (/home/gbusey/actors.js:400:8)
   at increaseSynergy (/home/gbusey/actors.js:701:6) 

第一行的格式为 <error class name>: <error message>,后面是一系列堆栈帧(每行以 "at " 开头)。 每一帧都描述了代码中导致错误生成的调用点。 V8 尝试为每个函数显示名称(通过变量名、函数名、或对象方法名),但偶尔会找不到合适的名称。 如果 V8 无法确定函数的名称,则只会显示该帧的位置信息。 否则,将显示确定的函数名称,括号中会附加位置信息。

帧仅为 JavaScript 函数生成。 例如,如果执行同步通过名为 cheetahify 的 C++ 插件函数,该函数本身调用 JavaScript 函数,则表示 cheetahify 调用的帧将不会出现在堆栈跟踪中:

const cheetahify = require('./native-binding.node');

function makeFaster() {
  // `cheetahify()` *synchronously* calls speedy.
  cheetahify(function speedy() {
    throw new Error('oh no!');
  });
}

makeFaster();
// will throw:
//   /home/gbusey/file.js:6
//       throw new Error('oh no!');
//           ^
//   Error: oh no!
//       at speedy (/home/gbusey/file.js:6:11)
//       at makeFaster (/home/gbusey/file.js:5:3)
//       at Object.<anonymous> (/home/gbusey/file.js:10:1)
//       at Module._compile (module.js:456:26)
//       at Object.Module._extensions..js (module.js:474:10)
//       at Module.load (module.js:356:32)
//       at Function.Module._load (module.js:312:12)
//       at Function.Module.runMain (module.js:497:10)
//       at startup (node.js:119:16)
//       at node.js:906:3 

位置信息将是以下之一:

  • native, 如果帧代表 V8 内部的调用(如 [].forEach)。
  • plain-filename.js:line:column, 如果帧代表 Node.js 内部调用
  • 如果帧代表用户程序中的调用(使用 CommonJS 模块系统)或其依赖,则为 /absolute/path/to/file.js:line:column
  • 如果帧代表用户程序中的调用(使用 ES 模块系统)或其依赖,则为 <transport-protocol>:///url/to/module/file.mjs:line:column

error.stack 属性为 accessed 时,将延迟生成表示堆栈跟踪的字符串。

堆栈跟踪捕获的帧数以 Error.stackTraceLimit 或当前事件循环刻度上的可用帧数中的较小者为界。

类:AssertionError#

表示断言的失败。 详情见 Class: assert.AssertionError

类:RangeError#

表示提供的参数不在函数可接受值的集合或范围内; 这是一个数字范围,还是超出给定函数参数的选项集。

require('node:net').connect(-1);
// Throws "RangeError: "port" option should be >= 0 and < 65536: -1" 

Node.js 将立即生成并抛出 RangeError 实例作为参数验证的一种形式。

类:ReferenceError#

表示正在尝试访问未定义的变量。 此类错误通常表示代码中存在拼写错误或程序损坏。

虽然客户端代码可能会产生和传播这些错误,但实际上只有 V8 会这样做。

doesNotExist;
// Throws ReferenceError, doesNotExist is not a variable in this program. 

除非应用动态生成和运行代码,否则 ReferenceError 实例表明代码或其依赖中存在错误。

类:SyntaxError#

表示程序不是有效的 JavaScript。 这些错误只能作为代码评估的结果生成和传播。 代码评估可能作为 evalFunctionrequirevm 的结果发生。 这些错误几乎始终表明程序损坏。

try {
  require('node:vm').runInThisContext('binary ! isNotOk');
} catch (err) {
  // 'err' will be a SyntaxError.
} 

SyntaxError 实例在创建它们的上下文中不可恢复 – 它们可能只会被其他上下文捕获。

类:SystemError#

Node.js 在其运行时环境中发生异常时会生成系统错误。 这些通常发生在应用违反操作系统约束时。 例如,如果应用尝试读取不存在的文件,则会发生系统错误。

  • address <string> 如果存在,则为网络连接失败的地址
  • code <string> 字符串错误码
  • dest <string> 如果存在,则为报告文件系统错误时的文件路径目标
  • errno <number> 系统提供的错误号
  • info <Object> 如果存在,则为关于错误情况的额外细节
  • message <string> 系统提供的人类可读的错误描述
  • path <string> 如果存在,则为报告文件系统错误时的文件路径
  • port <number> 如果存在,则为不可用的网络连接端口
  • syscall <string> 触发错误的系统调用名称

error.address#

如果存在,则 error.address 是描述网络连接失败的地址的字符串。

error.code#

error.code 属性是表示错误代码的字符串。

error.dest#

如果存在,则 error.dest 是报告文件系统错误时的文件路径目标。

error.errno#

error.errno 属性是对应于 libuv Error handling 中定义的错误码的负数。

在 Windows 上,系统提供的错误号将由 libuv 规范化。

要获取错误码的字符串表示,则使用 util.getSystemErrorName(error.errno)

error.info#

如果存在,则 error.info 是包含错误情况详细信息的对象。

error.message#

error.message 是系统提供的人类可读的错误描述。

error.path#

如果存在,则 error.path 是包含相关无效路径名的字符串。

error.port#

如果存在,则 error.port 是不可用的网络连接端口。

error.syscall#

error.syscall 属性是描述失败的 系统调用 的字符串。

常见系统错误#

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

  • 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() 没有被正确地调用。

类:TypeError#

表示提供的参数不是允许的类型。 例如,将函数传给期望字符串为 TypeError 的参数。

require('node:url').parse(() => { });
// Throws TypeError, since it expected a string. 

Node.js 将立即生成并抛出 TypeError 实例作为参数验证的一种形式。

异常与错误#

JavaScript 异常是由于无效操作或作为 throw 语句的目标而抛出的值。 虽然不要求这些值是 Error 的实例或从 Error 继承的类,但 Node.js 或 JavaScript 运行时抛出的所有异常都将是 Error 的实例。

有些异常在 JavaScript 层是不可恢复的。 这种异常总是会导致 Node.js 进程崩溃。 示例包括 C++ 层中的 assert() 检查或 abort() 调用。

OpenSSL 错误#

源自 cryptotls 的错误属于 Error 类,除了标准的 .code.message 属性外,可能还有一些额外的 OpenSSL 特定属性。

error.opensslErrorStack#

可以为 OpenSSL 库中错误源自的位置提供上下文的错误数组。

error.function#

错误源自的 OpenSSL 函数。

error.library#

错误源自的 OpenSSL 库。

error.reason#

描述错误原因的人类可读的字符串。

Node.js 错误代码#

ABORT_ERR#

当操作中止时使用(通常使用 AbortController)。

不使用 AbortSignal 的 API 通常不会引发此代码的错误。

此代码未使用 Node.js 错误使用的常规 ERR_* 约定,以便与网络平台的 AbortError 兼容。

ERR_ACCESS_DENIED#

每当 Node.js 尝试访问受 权限模型 限制的资源时,就会触发一种特殊类型的错误。

ERR_AMBIGUOUS_ARGUMENT#

函数参数的使用方式表明函数签名可能会被误解。 当 assert.throws(block, message) 中的 message 参数与 block 抛出的错误消息匹配时,则由 node:assert 模块抛出错误,因为这种用法表明用户认为 message 是预期的消息,而不是 block 不抛出时 AssertionError 将显示的消息。

ERR_ARG_NOT_ITERABLE#

需要可迭代的参数(即适用于 for...of 循环的值),但未提供给 Node.js API。

ERR_ASSERTION#

特殊类型的错误,每当 Node.js 检测到不应该发生的异常逻辑违规时就会触发。 这些通常由 node:assert 模块引发。

ERR_ASYNC_CALLBACK#

试图将不是函数的东西注册为 AsyncHooks 回调。

ERR_ASYNC_TYPE#

异步资源的类型无效。 如果使用公共的嵌入器 API,则用户还可以定义自己的类型。

ERR_BROTLI_COMPRESSION_FAILED#

传给 Brotli 流的数据未成功压缩。

ERR_BROTLI_INVALID_PARAM#

在构建 Brotli 流期间传入了无效的参数键。

ERR_BUFFER_CONTEXT_NOT_AVAILABLE#

尝试从插件或嵌入器代码创建 Node.js Buffer 实例,而在与 Node.js 实例无关的 JS 引擎上下文中。 传给 Buffer 方法的数据将在方法返回时被释放。

当遇到此错误时,创建 Buffer 实例的一种可能的替代方法是创建普通的 Uint8Array,它仅在生成的对象的原型上有所不同。 Uint8Array 在所有 Node.js 核心 API 中普遍接受,而 Buffer 是; 它们在所有上下文中都可用。

ERR_BUFFER_OUT_OF_BOUNDS#

尝试了超出 Buffer 范围的操作。

ERR_BUFFER_TOO_LARGE#

已尝试创建大于最大允许大小的 Buffer

ERR_CANNOT_WATCH_SIGINT#

Node.js 无法监视 SIGINT 信号。

ERR_CHILD_CLOSED_BEFORE_REPLY#

在父进程收到响应之前子进程已关闭。

ERR_CHILD_PROCESS_IPC_REQUIRED#

当在没有指定进程间通信通道的情况下衍生子进程时使用。

ERR_CHILD_PROCESS_STDIO_MAXBUFFER#

当主进程试图从子进程的标准错误或标准输出读取数据、并且数据的长度比 maxBuffer 选项长时使用。

ERR_CLOSED_MESSAGE_PORT#

曾试图在关闭状态下使用 MessagePort 实例,通常是在调用 .close() 之后。

ERR_CONSOLE_WRITABLE_STREAM#

Console 在没有 stdout 流的情况下被实例化,或者 Console 有不可写的 stdoutstderr 流。

ERR_CONSTRUCT_CALL_INVALID#

调用了不可调用的类构造函数。

ERR_CONSTRUCT_CALL_REQUIRED#

在没有 new 的情况下调用了类的构造函数。

ERR_CONTEXT_NOT_INITIALIZED#

传入 API 的虚拟机上下文尚未初始化。 这可能发生在上下文创建过程中发生(并被捕获)错误时,例如,当分配失败或在创建上下文时达到最大调用堆栈大小时。

ERR_CRYPTO_CUSTOM_ENGINE_NOT_SUPPORTED#

所请求的 OpenSSL 引擎(例如,通过 clientCertEngineprivateKeyEngine TLS 选项)不受正在使用的 OpenSSL 版本的支持,可能是由于编译时标志 OPENSSL_NO_ENGINE

ERR_CRYPTO_ECDH_INVALID_FORMAT#

format 参数的无效值被传给 crypto.ECDH()getPublicKey() 方法。

ERR_CRYPTO_ECDH_INVALID_PUBLIC_KEY#

key 参数的无效值已传给 crypto.ECDH()computeSecret() 方法。 这意味着公钥位于椭圆曲线之外。

ERR_CRYPTO_ENGINE_UNKNOWN#

无效的加密引擎标识符被传给 require('node:crypto').setEngine()

ERR_CRYPTO_FIPS_FORCED#

使用了 --force-fips 命令行参数,但尝试在 node:crypto 模块中启用或禁用 FIPS 模式。

ERR_CRYPTO_FIPS_UNAVAILABLE#

尝试启用或禁用 FIPS 模式,但 FIPS 模式不可用。

ERR_CRYPTO_HASH_FINALIZED#

hash.digest() 被多次调用。 对于 Hash 对象的每个实例,调用 hash.digest() 方法的次数不得超过一次。

ERR_CRYPTO_HASH_UPDATE_FAILED#

hash.update() 因任何原因失败。 这应该很少发生,如果有的话。

ERR_CRYPTO_INCOMPATIBLE_KEY#

给定的加密密钥与尝试的操作不兼容。

ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS#

所选的公钥或私钥编码与其他选项不兼容。

ERR_CRYPTO_INITIALIZATION_FAILED#

加密子系统初始化失败。

ERR_CRYPTO_INVALID_AUTH_TAG#

提供了无效的身份验证标签。

ERR_CRYPTO_INVALID_COUNTER#

为计数器模式密码提供了无效的计数器。

ERR_CRYPTO_INVALID_CURVE#

提供了无效的椭圆曲线。

ERR_CRYPTO_INVALID_DIGEST#

指定了无效的 加密摘要算法

ERR_CRYPTO_INVALID_IV#

提供了无效的初始化向量。

ERR_CRYPTO_INVALID_JWK#

提供了无效的 JSON 网络密钥。

ERR_CRYPTO_INVALID_KEY_OBJECT_TYPE#

给定的加密密钥对象的类型对于尝试的操作无效。

ERR_CRYPTO_INVALID_KEYLEN#

提供了无效的密钥长度。

ERR_CRYPTO_INVALID_KEYPAIR#

提供了无效的密钥对。

ERR_CRYPTO_INVALID_KEYTYPE#

提供了无效的密钥类型。

ERR_CRYPTO_INVALID_MESSAGELEN#

提供了无效的消息长度。

ERR_CRYPTO_INVALID_SCRYPT_PARAMS#

提供了无效的 scrypt 算法参数。

ERR_CRYPTO_INVALID_STATE#

对处于无效状态的对象使用了加密方法。 例如,在调用 cipher.final() 之前调用 cipher.getAuthTag()

ERR_CRYPTO_INVALID_TAG_LENGTH#

提供了无效的身份验证标签长度。

ERR_CRYPTO_JOB_INIT_FAILED#

异步加密操作的初始化失败。

ERR_CRYPTO_JWK_UNSUPPORTED_CURVE#

Key 的椭圆曲线未注册用于 JSON Web 密钥椭圆曲线注册表

ERR_CRYPTO_JWK_UNSUPPORTED_KEY_TYPE#

密钥的非对称密钥类型未注册用于 JSON Web 密钥类型注册表

ERR_CRYPTO_OPERATION_FAILED#

加密操作失败,原因不明。

ERR_CRYPTO_PBKDF2_ERROR#

PBKDF2 算法因不明原因失败。 OpenSSL 没有提供更多细节,因此 Node.js 也没有。

ERR_CRYPTO_SCRYPT_INVALID_PARAMETER#

一个或多个 crypto.scrypt()crypto.scryptSync() 参数超出其合法范围。

ERR_CRYPTO_SCRYPT_NOT_SUPPORTED#

Node.js 是在没有 scrypt 支持的情况下编译的。 官方发布的二进制文件不可能,但自定义构建可能会发生,包括发行版构建。

ERR_CRYPTO_SIGN_KEY_REQUIRED#

未向 sign.sign() 方法提供签名 key

ERR_CRYPTO_TIMING_SAFE_EQUAL_LENGTH#

crypto.timingSafeEqual() 是用不同长度的 BufferTypedArrayDataView 参数调用的。

ERR_CRYPTO_UNKNOWN_CIPHER#

指定了未知的密码。

ERR_CRYPTO_UNKNOWN_DH_GROUP#

给定了未知的 Diffie-Hellman 组名。 有关有效组名的列表,请参阅 crypto.getDiffieHellman()

ERR_CRYPTO_UNSUPPORTED_OPERATION#

尝试调用不受支持的加密操作。

ERR_DEBUGGER_ERROR#

debugger 发生错误。

ERR_DEBUGGER_STARTUP_ERROR#

debugger 在等待所需的主机/端口空闲时超时。

ERR_DLOPEN_DISABLED#

加载已使用 --no-addons 禁用的原生插件。

ERR_DLOPEN_FAILED#

调用 process.dlopen() 失败。

ERR_DIR_CLOSED#

fs.Dir 先前已关闭。

ERR_DIR_CONCURRENT_OPERATION#

尝试在具有正在进行的异步操作的 fs.Dir 上进行同步的读取或关闭的调用。

ERR_DNS_SET_SERVERS_FAILED#

c-ares 设置域名系统服务器失败。

ERR_DOMAIN_CALLBACK_NOT_AVAILABLE#

node:domain 模块不可用,因为它无法建立所需的错误处理钩子,因为 process.setUncaughtExceptionCaptureCallback() 已在较早的时间点被调用。

ERR_DOMAIN_CANNOT_SET_UNCAUGHT_EXCEPTION_CAPTURE#

无法调用 process.setUncaughtExceptionCaptureCallback(),因为 node:domain 模块已在较早的时间点加载。

堆栈跟踪扩展到包括加载 node:domain 模块的时间点。

ERR_DUPLICATE_STARTUP_SNAPSHOT_MAIN_FUNCTION#

v8.startupSnapshot.setDeserializeMainFunction() 不能被调用,因为它之前已经被调用过。

ERR_ENCODING_INVALID_ENCODED_DATA#

根据提供的编码,提供给 TextDecoder() API 的数据无效。

ERR_ENCODING_NOT_SUPPORTED#

提供给 TextDecoder() API 的编码不是 WHATWG 支持的编码 之一。

ERR_EVAL_ESM_CANNOT_PRINT#

--print 不能与 ESM 输入一起使用。

ERR_EVENT_RECURSION#

当试图在 EventTarget 上递归调度事件时抛出。

ERR_EXECUTION_ENVIRONMENT_NOT_AVAILABLE#

JS 执行上下文与 Node.js 环境无关。 当 Node.js 用作嵌入式库并且 JS 引擎的一些钩子没有正确地设置时,可能会发生这种情况。

ERR_FALSY_VALUE_REJECTION#

通过 util.callbackify() 回调的 Promise 使用非真值拒绝。

ERR_FEATURE_UNAVAILABLE_ON_PLATFORM#

当使用了运行 Node.js 的当前平台不可用的特性时使用。

ERR_FS_CP_DIR_TO_NON_DIR#

尝试使用 fs.cp() 将目录复制到非目录(文件、符号链接等)。

ERR_FS_CP_EEXIST#

试图使用 fs.cp()forceerrorOnExist 设置为 true)复制已经存在的文件。

ERR_FS_CP_EINVAL#

当使用 fs.cp()srcdest 指向无效路径时。

ERR_HTTP_BODY_NOT_ALLOWED#

写入不允许内容的 HTTP 响应时会抛出错误。

ERR_HTTP_CONTENT_LENGTH_MISMATCH#

响应正文大小与指定的内容长度标头值不匹配。

ERR_FS_CP_FIFO_PIPE#

试图使用 fs.cp() 复制命名管道。

ERR_FS_CP_NON_DIR_TO_DIR#

尝试使用 fs.cp() 将非目录(文件、符号链接等)复制到目录。

ERR_FS_CP_SOCKET#

试图使用 fs.cp() 复制到套接字。

ERR_FS_CP_SYMLINK_TO_SUBDIRECTORY#

当使用 fs.cp() 时,dest 中的符号链接指向 src 的子目录。

ERR_FS_CP_UNKNOWN#

试图使用 fs.cp() 复制到未知的文件类型。

ERR_FS_EISDIR#

路径是目录。

ERR_FS_FILE_TOO_LARGE#

已尝试读取大小大于 Buffer 允许的最大大小的文件。

ERR_FS_INVALID_SYMLINK_TYPE#

传给 fs.symlink()fs.symlinkSync() 方法的符号链接类型无效。

ERR_HTTP_HEADERS_SENT#

在已发送标头后尝试添加更多标头。

ERR_HTTP_INVALID_HEADER_VALUE#

指定了无效的 HTTP 标头值。

ERR_HTTP_INVALID_STATUS_CODE#

状态代码超出了常规状态码的范围(100-999)。

ERR_HTTP_REQUEST_TIMEOUT#

客户端没有在允许的时间内发送整个请求。

ERR_HTTP_SOCKET_ASSIGNED#

给定的 ServerResponse 已经分配了一个套接字。

ERR_HTTP_SOCKET_ENCODING#

根据 RFC 7230 第 3 节,不允许更改套接字编码。

ERR_HTTP_TRAILER_INVALID#

即使传输编码不支持,也设置了 Trailer 标头。

ERR_HTTP2_ALTSVC_INVALID_ORIGIN#

HTTP/2 ALTSVC 帧需要有效的来源。

ERR_HTTP2_ALTSVC_LENGTH#

HTTP/2 ALTSVC 帧限制为最多 16,382 个有效载荷字节。

ERR_HTTP2_CONNECT_AUTHORITY#

对于使用 CONNECT 方法的 HTTP/2 请求,需要 :authority 伪标头。

ERR_HTTP2_CONNECT_PATH#

对于使用 CONNECT 方法的 HTTP/2 请求,禁止使用 :path 伪标头。

ERR_HTTP2_CONNECT_SCHEME#

对于使用 CONNECT 方法的 HTTP/2 请求,禁止使用 :scheme 伪标头。

ERR_HTTP2_ERROR#

发生了非特定的 HTTP/2 错误。

ERR_HTTP2_GOAWAY_SESSION#

新的 HTTP/2 流可能不会在 Http2Session 从连接的对等方接收到 GOAWAY 帧后打开。

ERR_HTTP2_HEADER_SINGLE_VALUE#

为只需要一个值的 HTTP/2 标头字段提供了多个值。

ERR_HTTP2_HEADERS_AFTER_RESPOND#

在启动 HTTP/2 响应后指定了额外的标头。

ERR_HTTP2_HEADERS_SENT#

试图发送多个响应头。

ERR_HTTP2_INFO_STATUS_NOT_ALLOWED#

信息性 HTTP 状态码(1xx)不能设置为 HTTP/2 响应的响应状态代码。

ERR_HTTP2_INVALID_CONNECTION_HEADERS#

HTTP/1 连接特定标头禁止在 HTTP/2 请求和响应中使用。

ERR_HTTP2_INVALID_HEADER_VALUE#

指定了无效的 HTTP/2 标头值。

ERR_HTTP2_INVALID_INFO_STATUS#

指定了无效的 HTTP 信息状态代码。 信息状态代码必须是 100199(含)之间的整数。

ERR_HTTP2_INVALID_ORIGIN#

HTTP/2 ORIGIN 帧需要有效的来源。

ERR_HTTP2_INVALID_PACKED_SETTINGS_LENGTH#

传给 http2.getUnpackedSettings() API 的输入 BufferUint8Array 实例的长度必须是 6 的倍数。

ERR_HTTP2_INVALID_PSEUDOHEADER#

只能使用有效的 HTTP/2 伪标头(:status:path:authority:scheme:method)。

ERR_HTTP2_INVALID_SESSION#

对已被销毁的 Http2Session 对象执行了操作。

ERR_HTTP2_INVALID_SETTING_VALUE#

为 HTTP/2 设置指定了无效值。

ERR_HTTP2_INVALID_STREAM#

对已被销毁的流执行了操作。

ERR_HTTP2_MAX_PENDING_SETTINGS_ACK#

每当一个 HTTP/2 SETTINGS 帧被发送到连接的对端时,对端需要发送确认其已经收到并应用了新的 SETTINGS。 默认情况下,可以在任何给定时间发送最大数量的未确认 SETTINGS 帧。 当达到该限制时使用此错误码。

ERR_HTTP2_NESTED_PUSH#

试图从推送流中启动新的推送流。 不允许嵌套推送流。

ERR_HTTP2_NO_MEM#

使用 http2session.setLocalWindowSize(windowSize) API 时内存不足。

ERR_HTTP2_NO_SOCKET_MANIPULATION#

试图直接操作(读取、写入、暂停、恢复等)连接到 Http2Session 的套接字。

ERR_HTTP2_ORIGIN_LENGTH#

HTTP/2 ORIGIN 帧的长度限制为 16382 字节。

ERR_HTTP2_OUT_OF_STREAMS#

在单个 HTTP/2 会话上创建的流数达到了最大限制。

ERR_HTTP2_PAYLOAD_FORBIDDEN#

已为禁止负载的 HTTP 响应码指定了消息负载。

ERR_HTTP2_PING_CANCEL#

HTTP/2 发送回显信息被取消。

ERR_HTTP2_PING_LENGTH#

HTTP/2 发送回显信息负载的长度必须正好是 8 个字节。

ERR_HTTP2_PSEUDOHEADER_NOT_ALLOWED#

HTTP/2 伪标头使用不当。 伪标头是以 : 前缀开头的标头键名。

ERR_HTTP2_PUSH_DISABLED#

尝试创建推送流,但已被客户端禁用。

ERR_HTTP2_SEND_FILE#

尝试使用 Http2Stream.prototype.responseWithFile() API 发送目录。

ERR_HTTP2_SEND_FILE_NOSEEK#

尝试使用 Http2Stream.prototype.responseWithFile() API 发送常规文件以外的内容,但提供了 offsetlength 选项。

ERR_HTTP2_SESSION_ERROR#

Http2Session 以非零错误码关闭。

ERR_HTTP2_SETTINGS_CANCEL#

Http2Session 设置取消。

ERR_HTTP2_SOCKET_BOUND#

试图将 Http2Session 对象连接到已经绑定到另一个 Http2Session 对象的 net.Sockettls.TLSSocket

ERR_HTTP2_SOCKET_UNBOUND#

尝试使用已关闭的 Http2Sessionsocket 属性。

ERR_HTTP2_STATUS_101#

在 HTTP/2 中禁止使用 101 信息状态码。

ERR_HTTP2_STATUS_INVALID#

指定了无效的 HTTP 状态码。 状态码必须是介于 100599(含)之间的整数。

ERR_HTTP2_STREAM_CANCEL#

在将任何数据传输到连接的对等方之前,Http2Stream 已被破坏。

ERR_HTTP2_STREAM_ERROR#

RST_STREAM 帧中指定了非零错误码。

ERR_HTTP2_STREAM_SELF_DEPENDENCY#

当在为 HTTP/2 流设置优先级时,该流可能被标记为父流的依赖。 当试图标记流并依赖于它自己时,将使用此错误码。

ERR_HTTP2_TOO_MANY_INVALID_FRAMES#

已超出通过 maxSessionInvalidFrames 选项指定的对等方发送的可接受的无效 HTTP/2 协议帧的限制。

ERR_HTTP2_TRAILERS_ALREADY_SENT#

已在 Http2Stream 上发送了尾随标头。

ERR_HTTP2_TRAILERS_NOT_READY#

Http2Stream 对象上触发 'wantTrailers' 事件之后,才能调用 http2stream.sendTrailers() 方法。 只有为 Http2Stream 设置了 waitForTrailers 选项,才会触发 'wantTrailers' 事件。

ERR_HTTP2_UNSUPPORTED_PROTOCOL#

http2.connect() 传入的网址使用除 http:https: 以外的任何协议。

ERR_ILLEGAL_CONSTRUCTOR#

尝试使用非公共构造函数构造对象。

ERR_IMPORT_ASSERTION_TYPE_FAILED#

导入断言失败,阻止导入指定的模块。

ERR_IMPORT_ASSERTION_TYPE_MISSING#

缺少导入断言,阻止导入指定的模块。

ERR_IMPORT_ASSERTION_TYPE_UNSUPPORTED#

此版本的 Node.js 不支持导入断言。

ERR_INCOMPATIBLE_OPTION_PAIR#

选项对彼此不兼容,不能同时使用。

ERR_INPUT_TYPE_NOT_ALLOWED#

稳定性: 1 - 实验

--input-type 标志用于尝试执行文件。 此标志只能用于通过 --eval--printSTDIN 输入。

ERR_INSPECTOR_ALREADY_ACTIVATED#

在使用 node:inspector 模块时,当检查器已经开始监听端口时尝试激活。 在不同地址上激活之前使用 inspector.close()

ERR_INSPECTOR_ALREADY_CONNECTED#

在使用 node:inspector 模块时,当检查器已经连接时尝试连接。

ERR_INSPECTOR_CLOSED#

在使用 node:inspector 模块时,在会话已经关闭后尝试使用检查器。

ERR_INSPECTOR_COMMAND#

通过 node:inspector 模块触发命令时发生错误。

ERR_INSPECTOR_NOT_ACTIVE#

当调用 inspector.waitForDebugger() 时,inspector 未激活。

ERR_INSPECTOR_NOT_AVAILABLE#

node:inspector 模块无法使用。

ERR_INSPECTOR_NOT_CONNECTED#

在使用 node:inspector 模块时,尝试在连接前使用检查器。

ERR_INSPECTOR_NOT_WORKER#

在主线程上调用了只能从工作线程使用的 API。

ERR_INTERNAL_ASSERTION#

Node.js 中存在错误或 Node.js 内部使用不正确。 要修复该错误,请在 https://github.com/nodejs/node/issues 打开一个问题。

ERR_INVALID_ADDRESS_FAMILY#

Node.js API 无法识别提供的地址族。

ERR_INVALID_ARG_TYPE#

传给 Node.js API 的参数类型错误。

ERR_INVALID_ARG_VALUE#

为给定参数传入了无效或不受支持的值。

ERR_INVALID_ASYNC_ID#

使用 AsyncHooks 传入了无效的 asyncIdtriggerAsyncId。 小于 -1 的标识不应该发生。

ERR_INVALID_BUFFER_SIZE#

Buffer 上执行了交换,但其大小与操作不兼容。

ERR_INVALID_CHAR#

在标头中检测到无效字符。

ERR_INVALID_CURSOR_POS#

给定流上的游标不能移动到没有指定列的指定行。

ERR_INVALID_FD#

文件描述符无效(例如,它是负值)。

ERR_INVALID_FD_TYPE#

文件描述符的类型无效。

ERR_INVALID_FILE_URL_HOST#

使用 file: 网址的 Node.js API(例如 fs 模块中的某些函数)遇到了主机不兼容的文件网址。 这种情况只能发生在只支持 localhost 或空主机的类 Unix 系统上。

ERR_INVALID_FILE_URL_PATH#

使用 file: 网址的 Node.js API(例如 fs 模块中的某些函数)遇到路径不兼容的文件网址。 确定是否可以使用路径的确切语义是平台相关的。

ERR_INVALID_HANDLE_TYPE#

试图通过 IPC 通信通道将不受支持的 "handle" 发送到子进程。 有关详细信息,请参阅 subprocess.send()process.send()

ERR_INVALID_HTTP_TOKEN#

提供了无效的 HTTP 令牌。

ERR_INVALID_IP_ADDRESS#

IP 地址无效。

ERR_INVALID_MIME_SYNTAX#

MIME 语法无效。

ERR_INVALID_MODULE#

试图加载不存在或无效的模块。

ERR_INVALID_MODULE_SPECIFIER#

导入的模块字符串是无效的网址、包名称、或包子路径说明符。

ERR_INVALID_OBJECT_DEFINE_PROPERTY#

在对象的属性上设置无效属性时出错。

ERR_INVALID_PACKAGE_CONFIG#

无效的 package.json 文件解析失败。

ERR_INVALID_PACKAGE_TARGET#

package.json "exports" 字段包含用于尝试模块解析的无效目标映射值。

ERR_INVALID_PERFORMANCE_MARK#

在使用性能计时 API (perf_hooks) 时,性能标记无效。

ERR_INVALID_PROTOCOL#

无效的 options.protocol 被传给了 http.request()

ERR_INVALID_REPL_EVAL_CONFIG#

breakEvalOnSiginteval 选项都在 REPL 配置中设置,这是不支持的。

ERR_INVALID_REPL_INPUT#

输入不能在 REPL 中使用。 REPL 文档中描述了使用此错误的条件。

ERR_INVALID_RETURN_PROPERTY#

如果函数选项在执行时没有为其返回的对象属性之一提供有效值时,则抛出错误。

ERR_INVALID_RETURN_PROPERTY_VALUE#

如果函数选项在执行时没有为其返回的对象属性之一提供预期值类型时,则抛出错误。

ERR_INVALID_RETURN_VALUE#

如果函数选项在执行时没有返回预期的值类型时(例如当函数应该返回 promise),则抛出错误。

ERR_INVALID_STATE#

表示由于状态无效而无法完成操作。 例如,对象可能已经被销毁,或者可能正在执行另一个操作。

ERR_INVALID_SYNC_FORK_INPUT#

BufferTypedArrayDataViewstring 作为标准输入输出提供给异步的衍生。 有关更多信息,请参阅 child_process 模块的文档。

ERR_INVALID_THIS#

使用不兼容的 this 值调用了 Node.js API 函数

const urlSearchParams = new URLSearchParams('foo=bar&baz=new');

const buf = Buffer.alloc(1);
urlSearchParams.has.call(buf, 'foo');
// Throws a TypeError with code 'ERR_INVALID_THIS' 

ERR_INVALID_TRANSFER_OBJECT#

无效的传输对象被传给 postMessage()

ERR_INVALID_TUPLE#

提供给 WHATWG URLSearchParams constructoriterable 中的元素不代表 [name, value] 元组 – 也就是说,如果一个元素不可迭代,或者不完全由两个元素组成。

ERR_INVALID_URI#

传入了无效的网址。

ERR_INVALID_URL#

无效的 URL 已传递到 WHATWG URL constructor 或旧版 url.parse() 进行解析。 抛出的错误对象通常有附加的属性 'input',其中包含解析失败的网址。

ERR_INVALID_URL_SCHEME#

试图将不兼容方案(协议)的网址用于特定目的。 它仅用于 fs 模块中的 WHATWG URL API 支持(仅接受具有 'file' 方案的 URL),但将来也可能用于其他 Node.js API。

ERR_IPC_CHANNEL_CLOSED#

尝试使用已关闭的进程间通信通道。

ERR_IPC_DISCONNECTED#

试图断开已经断开的进程间通信通道。 有关更多信息,请参阅 child_process 模块的文档。

ERR_IPC_ONE_PIPE#

尝试使用多个进程间通信通道创建子 Node.js 进程。 有关更多信息,请参阅 child_process 模块的文档。

ERR_IPC_SYNC_FORK#

尝试使用同步衍生的 Node.js 进程打开进程间通信通道。 有关更多信息,请参阅 child_process 模块的文档。

ERR_LOADER_CHAIN_INCOMPLETE#

返回 ESM 加载器钩子,没有调用 next(),也没有明确触发短路信号。

ERR_MANIFEST_ASSERT_INTEGRITY#

尝试加载资源,但该资源与策略清单定义的完整性不匹配。 有关详细信息,请参阅 policy 清单的文档。

ERR_MANIFEST_DEPENDENCY_MISSING#

已尝试加载资源,但该资源未列为尝试加载它的位置的依赖。 有关详细信息,请参阅 policy 清单的文档。

ERR_MANIFEST_INTEGRITY_MISMATCH#

已尝试加载策略清单,但该清单包含多个彼此不匹配的资源条目。 更新清单条目以解决此错误。 有关详细信息,请参阅 policy 清单的文档。

ERR_MANIFEST_INVALID_RESOURCE_FIELD#

策略清单资源的其中一个字段的值无效。 更新清单条目以解决此错误。 有关详细信息,请参阅 policy 清单的文档。

ERR_MANIFEST_INVALID_SPECIFIER#

策略清单资源的依赖映射之一具有无效值。 更新清单条目以匹配以解决此错误。 有关详细信息,请参阅 policy 清单的文档。

ERR_MANIFEST_PARSE_POLICY#

已尝试加载策略清单,但无法解析该清单。 有关详细信息,请参阅 policy 清单的文档。

ERR_MANIFEST_TDZ#

已尝试从策略清单中读取,但清单初始化尚未发生。 这可能是 Node.js 中的错误。

ERR_MANIFEST_UNKNOWN_ONERROR#

已加载策略清单,但其 "onerror" 行为具有未知值。 有关详细信息,请参阅 policy 清单的文档。

ERR_MEMORY_ALLOCATION_FAILED#

尝试分配内存(通常在 C++ 层),但是失败。

ERR_MESSAGE_TARGET_CONTEXT_UNAVAILABLE#

无法在目标 vm Context 中反序列化发布到 MessagePort 的消息。 目前并非所有 Node.js 对象都可以在任何上下文中成功实例化,在这种情况下,尝试使用 postMessage() 传输它们可能会在接收端失败。

ERR_METHOD_NOT_IMPLEMENTED#

需要方法,但未实现。

ERR_MISSING_ARGS#

未传入 Node.js API 的必需参数。 这仅用于严格遵守 API 规范(在某些情况下可能接受 func(undefined) 但不接受 func())。 在大多数原生 Node.js API 中,func(undefined)func() 的处理方式相同,可以使用 ERR_INVALID_ARG_TYPE 错误码代替。

ERR_MISSING_OPTION#

对于接受选项对象的 API,某些选项可能是强制性的。 如果缺少必需的选项,则会抛出此代码。

ERR_MISSING_PASSPHRASE#

已尝试在未指定密码的情况下读取加密密钥。

ERR_MISSING_PLATFORM_FOR_WORKER#

此 Node.js 实例使用的 V8 平台不支持创建工作线程。 这是由于缺乏对工作线程的嵌入支持造成的。 特别是,此错误不会发生在 Node.js 的标准构建中。

ERR_MISSING_TRANSFERABLE_IN_TRANSFER_LIST#

需要在 transferList 参数中显式列出的对象在传给 postMessage() 调用的对象中,但未在 transferList 中为该调用提供。 通常,这是 MessagePort

在 v15.0.0 之前的 Node.js 版本中,这里使用的错误码是 ERR_MISSING_MESSAGE_PORT_IN_TRANSFER_LIST。 但是,可传输对象类型集已扩展到涵盖比 MessagePort 更多的类型。

ERR_MODULE_NOT_FOUND#

当尝试 import 操作或加载程序入口点时,ECMAScript 模块加载器无法解析模块文件。

ERR_MULTIPLE_CALLBACK#

回调被多次调用。

回调几乎总是意味着只被调用一次,因为查询可以被履行或被拒绝,但不能同时被执行。 后者可以通过多次调用回调来实现。

ERR_NAPI_CONS_FUNCTION#

在使用 Node-API 时,传入的构造函数不是函数。

ERR_NAPI_INVALID_DATAVIEW_ARGS#

在调用 napi_create_dataview() 时,给定的 offset 超出了数据视图的边界或 offset + length 大于给定的 buffer 的长度。

ERR_NAPI_INVALID_TYPEDARRAY_ALIGNMENT#

在调用 napi_create_typedarray() 时,提供的 offset 不是元素大小的倍数

ERR_NAPI_INVALID_TYPEDARRAY_LENGTH#

在调用 napi_create_typedarray() 时,(length * size_of_element) + byte_offset 大于给定的 buffer 的长度。

ERR_NAPI_TSFN_CALL_JS#

调用线程安全函数的 JavaScript 部分时出错。

ERR_NAPI_TSFN_GET_UNDEFINED#

尝试检索 JavaScript undefined 值时出错。

ERR_NAPI_TSFN_START_IDLE_LOOP#

在主线程上,值从空闲循环中与线程安全函数关联的队列中删除。 此错误表示尝试启动循环时发生错误。

ERR_NAPI_TSFN_STOP_IDLE_LOOP#

一旦队列中没有更多的条目,则空闲循环必须暂停。 此错误表明空闲循环未能停止

ERR_NOT_BUILDING_SNAPSHOT#

尝试使用只能在构建 V8 启动快照时使用的操作,即使 Node.js 没有构建一个。

ERR_NOT_SUPPORTED_IN_SNAPSHOT#

尝试执行构建启动快照时不支持的操作。

ERR_NO_CRYPTO#

尝试使用加密特性,而 Node.js 没有使用 OpenSSL 加密支持进行编译。

ERR_NO_ICU#

已尝试使用需要 ICU 的功能,但 Node.js 未使用 ICU 支持进行编译。

ERR_NON_CONTEXT_AWARE_DISABLED#

在不允许加载的进程中加载​​了非上下文感知的原生插件。

ERR_OUT_OF_RANGE#

给定的值超出了可接受的范围。

ERR_PACKAGE_IMPORT_NOT_DEFINED#

package.json "imports" 字段未定义给定的内部包说明符映射。

ERR_PACKAGE_PATH_NOT_EXPORTED#

package.json "exports" 字段没有导出请求的子路径。 因为导出是封装的,没有导出的私有内部模块无法通过包解析导入,除非使用绝对网址。

ERR_PARSE_ARGS_INVALID_OPTION_VALUE#

strict 设置为 true 时,如果为 <string> 类型的选项提供了 <boolean> 值,或者为 <boolean> 类型的选项提供了 <string> 值,则由 util.parseArgs() 抛出异常。

ERR_PARSE_ARGS_UNEXPECTED_POSITIONAL#

当提供位置参数并且 allowPositionals 设置为 false 时,由 util.parseArgs() 抛出。

ERR_PARSE_ARGS_UNKNOWN_OPTION#

strict 设置为 true 时,如果 options 中没有配置参数,则由 util.parseArgs() 抛出异常。

ERR_PERFORMANCE_INVALID_TIMESTAMP#

为性能标记或度量提供了无效的时间戳值。

ERR_PERFORMANCE_MEASURE_INVALID_OPTIONS#

为性能度量提供了无效选项。

ERR_PROTO_ACCESS#

已禁止使用 --disable-proto=throw 访问 Object.prototype.__proto__Object.getPrototypeOfObject.setPrototypeOf 应该用于获取和设置对象的原型。

ERR_REQUIRE_ESM#

稳定性: 1 - 实验

已尝试对 require()ES 模块 进行操作。

ERR_SCRIPT_EXECUTION_INTERRUPTED#

脚本执行被 SIGINT 中断(例如,按下了 Ctrl+C。)

ERR_SCRIPT_EXECUTION_TIMEOUT#

脚本执行超时,可能是由于正在执行的脚本中存在错误。

ERR_SERVER_ALREADY_LISTEN#

net.Server 已经在监听时调用了 server.listen() 方法。 这适用于 net.Server 的所有实例,包括 HTTP、HTTPS 和 HTTP/2 Server 实例。

ERR_SERVER_NOT_RUNNING#

net.Server 未运行时调用了 server.close() 方法。 这适用于 net.Server 的所有实例,包括 HTTP、HTTPS 和 HTTP/2 Server 实例。

ERR_SOCKET_ALREADY_BOUND#

试图绑定已经绑定的套接字。

ERR_SOCKET_BAD_BUFFER_SIZE#

dgram.createSocket() 中的 recvBufferSizesendBufferSize 选项传入了无效的(负数的)大小。

ERR_SOCKET_BAD_PORT#

An API function expecting a port >= 0 and < 65536 收到无效值。

ERR_SOCKET_BAD_TYPE#

需要套接字类型(udp4udp6)的 API 函数收到无效值。

ERR_SOCKET_BUFFER_SIZE#

在使用 dgram.createSocket() 时,无法确定接收或发送 Buffer 的大小。

ERR_SOCKET_CLOSED#

试图在已经关闭的套接字上进行操作。

ERR_SOCKET_CLOSED_BEFORE_CONNECTION#

在连接套接字上调用 net.Socket.write() 时套接字在连接建立之前关闭。

ERR_SOCKET_CONNECTION_TIMEOUT#

使用系列自动选择算法时,套接字无法在允许的超时时间内连接到 DNS 返回的任何地址。

ERR_SOCKET_DGRAM_IS_CONNECTED#

在已连接的套接字上进行了 dgram.connect() 调用。

ERR_SOCKET_DGRAM_NOT_CONNECTED#

在断开连接的套接字上进行了 dgram.disconnect()dgram.remoteAddress() 调用。

ERR_SOCKET_DGRAM_NOT_RUNNING#

进行了调用,并且 UDP 子系统没有运行。

ERR_SRI_PARSE#

为子资源完整性检查提供了字符串,但无法解析。 通过查看 子资源完整性规范 检查完整性属性的格式。

ERR_STREAM_ALREADY_FINISHED#

调用的流方法无法完成,因为流已完成

ERR_STREAM_CANNOT_PIPE#

试图在 Writable 流上调用 stream.pipe()

ERR_STREAM_DESTROYED#

调用了无法完成的流方法,因为使用 stream.destroy() 销毁了该流。

ERR_STREAM_NULL_VALUES#

试图用 null 块调用 stream.write()

ERR_STREAM_PREMATURE_CLOSE#

stream.finished()stream.pipeline() 返回的错误,当流或管道以非正常方式结束且没有显式错误时。

ERR_STREAM_PUSH_AFTER_EOF#

在将 null(EOF)推送到流后,尝试调用 stream.push()

ERR_STREAM_UNSHIFT_AFTER_END_EVENT#

在触发 'end' 事件后尝试调用 stream.unshift()

ERR_STREAM_WRAP#

如果在套接字上设置了字符串解码器或解码器在 objectMode 中,则防止中止。

const Socket = require('node:net').Socket;
const instance = new Socket();

instance.setEncoding('utf8'); 

ERR_STREAM_WRITE_AFTER_END#

在调用 stream.end() 后尝试调用 stream.write()

ERR_STRING_TOO_LONG#

尝试创建长度超过最大允许长度的字符串。

ERR_SYNTHETIC#

用于捕获诊断报告调用堆栈的人为错误对象。

ERR_SYSTEM_ERROR#

Node.js 进程中发生了未指定或非特定的系统错误。 错误对象将具有带有附加详细信息的 err.info 对象属性。

ERR_TAP_LEXER_ERROR#

代表失败的词法分析器状态的错误。

ERR_TAP_PARSER_ERROR#

表示解析器状态失败的错误。 有关导致错误的令牌的其他信息可通过 cause 属性获得。

ERR_TAP_VALIDATION_ERROR#

此错误表示 TAP 验证失败。

ERR_TEST_FAILURE#

此错误表示测试失败。 有关失败的其他信息可通过 cause 属性获得。 failureType 属性指定发生故障时测试正在做什么。

ERR_TLS_ALPN_CALLBACK_INVALID_RESULT#

ALPNCallback 返回的值不在客户端提供的 ALPN 协议列表中时,会引发此错误。

ERR_TLS_ALPN_CALLBACK_WITH_PROTOCOLS#

如果 TLS 选项同时包含 ALPNProtocolsALPNCallback,则创建 TLSServer 时会引发此错误。 这些选项是互斥的。

ERR_TLS_CERT_ALTNAME_FORMAT#

如果用户提供的 subjectaltname 属性违反编码规则,则 checkServerIdentity 会抛出此错误。 Node.js 本身生成的证书对象始终符合编码规则,永远不会出现此错误。

ERR_TLS_CERT_ALTNAME_INVALID#

在使用 TLS 时,对等方的主机名/IP 与其证书中的任何 subjectAltNames 都不匹配。

ERR_TLS_DH_PARAM_SIZE#

在使用 TLS 时,为 Diffie-Hellman(DH)密钥协商协议提供的参数太小。 默认情况下,密钥长度必须大于或等于 1024 位以避免漏洞,尽管强烈建议使用 2048 位或更大以增强安全性。

ERR_TLS_HANDSHAKE_TIMEOUT#

TLS/SSL 握手超时。 在这种情况下,服务器也必须中止连接。

ERR_TLS_INVALID_CONTEXT#

上下文必须是 SecureContext

ERR_TLS_INVALID_PROTOCOL_METHOD#

指定的 secureProtocol 方法无效。 它要么未知,要么因为不安全而被禁用。

ERR_TLS_INVALID_PROTOCOL_VERSION#

有效的 TLS 协议版本为 'TLSv1''TLSv1.1''TLSv1.2'

ERR_TLS_INVALID_STATE#

必须连接并安全建立 TLS 套接字。 确保在继续之前触发 'secure' 事件。

ERR_TLS_PROTOCOL_VERSION_CONFLICT#

尝试设置 TLS 协议 minVersionmaxVersion 与尝试显式设置 secureProtocol 冲突。 使用一种或另一种机制。

ERR_TLS_PSK_SET_IDENTIY_HINT_FAILED#

未能设置 PSK 身份提示。 提示可能太长。

ERR_TLS_RENEGOTIATION_DISABLED#

尝试在禁用重新协商的套接字实例上重新协商 TLS。

ERR_TLS_REQUIRED_SERVER_NAME#

在使用 TLS 时,调用 server.addContext() 方法时没有在第一个参数中提供主机名。

ERR_TLS_SESSION_ATTACK#

检测到过多的 TLS 重新协商,这是拒绝服务攻击的潜在载体。

ERR_TLS_SNI_FROM_SERVER#

试图从 TLS 服务器端套接字触发服务器名称指示,它仅对客户端有效。

ERR_TRACE_EVENTS_CATEGORY_REQUIRED#

trace_events.createTracing() 方法至少需要一个跟踪事件类别。

ERR_TRACE_EVENTS_UNAVAILABLE#

无法加载 node:trace_events 模块,因为 Node.js 是使用 --without-v8-platform 标志编译的。

ERR_TRANSFORM_ALREADY_TRANSFORMING#

Transform 流在它仍在转换时完成。

ERR_TRANSFORM_WITH_LENGTH_0#

Transform 流完成,数据仍在写入缓冲区中。

ERR_TTY_INIT_FAILED#

由于系统错误,终端的初始化失败。

ERR_UNAVAILABLE_DURING_EXIT#

函数在 process.on('exit') 句柄中调用,不应在 process.on('exit') 句柄中调用。

ERR_UNCAUGHT_EXCEPTION_CAPTURE_ALREADY_SET#

process.setUncaughtExceptionCaptureCallback() 被调用了两次,没有先将回调重置为 null

此错误旨在防止意外覆盖从另一个模块注册的回调。

ERR_UNESCAPED_CHARACTERS#

收到包含未转义字符的字符串。

ERR_UNHANDLED_ERROR#

发生未处理的错误(例如,当 EventEmitter 触发 'error' 事件但未注册 'error' 句柄时)。

ERR_UNKNOWN_BUILTIN_MODULE#

用于识别通常不应由用户代码触发的特定类型的内部 Node.js 错误。 此错误的实例指向 Node.js 二进制文件本身的内部错误。

ERR_UNKNOWN_CREDENTIAL#

传入了不存在的 Unix 群组或用户标识符。

ERR_UNKNOWN_ENCODING#

传给 API 的编码选项无效或未知。

ERR_UNKNOWN_FILE_EXTENSION#

稳定性: 1 - 实验

试图加载具有未知或不受支持的文件扩展名的模块。

ERR_UNKNOWN_MODULE_FORMAT#

稳定性: 1 - 实验

试图加载格式未知或不受支持的模块。

ERR_UNKNOWN_SIGNAL#

无效或未知的进程信号已传给需要有效信号的 API(例如 subprocess.kill())。

ERR_UNSUPPORTED_DIR_IMPORT#

import 目录网址不受支持。 取而代之的是 package.json 文件的 "exports" 字段中的 使用包的名称自引用包定义自定义的子路径

import './'; // unsupported
import './index.js'; // supported
import 'package-name'; // supported 

ERR_UNSUPPORTED_ESM_URL_SCHEME#

不支持带有 filedata 以外的网址方案的 import

ERR_USE_AFTER_CLOSE#

稳定性: 1 - 实验

试图使用已经关闭的东西。

ERR_VALID_PERFORMANCE_ENTRY_TYPE#

在使用性能计时 API(perf_hooks)时,找不到有效的性能条目类型。

ERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING#

未指定动态导入回调。

ERR_VM_MODULE_ALREADY_LINKED#

由于以下原因之一,尝试链接的模块不符合链接条件:

  • 已链接(linkingStatus'linked'
  • 正在链接(linkingStatus'linking'
  • 此模块的链接失败(linkingStatus'errored'

ERR_VM_MODULE_CACHED_DATA_REJECTED#

传给模块构造函数的 cachedData 选项无效。

ERR_VM_MODULE_CANNOT_CREATE_CACHED_DATA#

不能为已经评估过的模块创建缓存数据。

ERR_VM_MODULE_DIFFERENT_CONTEXT#

从链接器函数返回的模块来自与父模块不同的上下文。 链接的模块必须共享相同的上下文。

ERR_VM_MODULE_LINK_FAILURE#

由于失败,模块无法链接。

ERR_VM_MODULE_NOT_MODULE#

链接 promise 的履行值不是 vm.Module 对象。

ERR_VM_MODULE_STATUS#

当前模块的状态不允许此操作。 错误的具体含义取决于具体的函数。

ERR_WASI_ALREADY_STARTED#

WASI 实例已经启动。

ERR_WASI_NOT_STARTED#

WASI 实例尚未启动。

ERR_WEBASSEMBLY_RESPONSE#

已传给 WebAssembly.compileStreamingWebAssembly.instantiateStreamingResponse 不是有效的 WebAssembly 响应。

ERR_WORKER_INIT_FAILED#

Worker 初始化失败。

ERR_WORKER_INVALID_EXEC_ARGV#

传给 Worker 构造函数的 execArgv 选项包含无效标志。

ERR_WORKER_NOT_RUNNING#

操作失败,因为 Worker 实例当前未运行。

ERR_WORKER_OUT_OF_MEMORY#

Worker 实例因达到其内存限制而终止。

ERR_WORKER_PATH#

工作线程主脚本的路径既不是绝对路径也不是以 ./../ 开头的相对路径。

ERR_WORKER_UNSERIALIZABLE_ERROR#

从工作线程序列化未捕获异常的所有尝试都失败了。

ERR_WORKER_UNSUPPORTED_OPERATION#

工作线程不支持请求的功能。

ERR_ZLIB_INITIALIZATION_FAILED#

由于配置不正确,创建 zlib 对象失败。

HPE_HEADER_OVERFLOW#

接收到了太多的 HTTP 标头数据。 为了防止恶意或错误配置的客户端,如果接收到超过 8 KiB 的 HTTP 标头数据,则 HTTP 解析将中止,而不会创建请求或响应对象,并且将触发带有此代码的 Error

HPE_UNEXPECTED_CONTENT_LENGTH#

服务器正在发送 Content-Length 标头和 Transfer-Encoding: chunked

Transfer-Encoding: chunked 允许服务器为动态生成的内容维护 HTTP 持久连接。 在这种情况下,无法使用 Content-Length HTTP 标头。

使用 Content-LengthTransfer-Encoding: chunked

MODULE_NOT_FOUND#

当尝试 require() 操作或加载程序入口点时,CommonJS 模块加载器无法解析模块文件。

旧版 Node.js 错误代码#

稳定性: 0 - 弃用。 这些错误代码要么不一致,要么已被删除。

ERR_CANNOT_TRANSFER_OBJECT#

传给 postMessage() 的值包含不支持传输的对象。

ERR_CRYPTO_HASH_DIGEST_NO_UTF16#

UTF-16 编码用于 hash.digest()。 虽然 hash.digest() 方法确实允许传入 encoding 参数,使该方法返回字符串而不是 Buffer,但不支持 UTF-16 编码(例如 ucsutf16le)。

ERR_HTTP2_FRAME_ERROR#

在 HTTP/2 会话中发送单个帧失败时使用。

ERR_HTTP2_HEADERS_OBJECT#

在需要 HTTP/2 标头对象时使用。

ERR_HTTP2_HEADER_REQUIRED#

当 HTTP/2 消息中缺少所需的标头时使用。

ERR_HTTP2_INFO_HEADERS_AFTER_RESPOND#

HTTP/2 信息标头只能在调用 Http2Stream.prototype.respond() 方法之前发送。

ERR_HTTP2_STREAM_CLOSED#

当在已关闭的 HTTP/2 流上执行操作时使用。

ERR_HTTP_INVALID_CHAR#

当在 HTTP 响应状态消息(原因短语)中发现无效字符时使用。

ERR_INDEX_OUT_OF_RANGE#

给定的索引超出了可接受的范围(例如负偏移量)。

ERR_INVALID_OPT_VALUE#

在选项对象中传入了无效或意外的值。

ERR_INVALID_OPT_VALUE_ENCODING#

传入了无效或未知的文件编码。

ERR_MISSING_MESSAGE_PORT_IN_TRANSFER_LIST#

此错误码在 Node.js v15.0.0 中被 ERR_MISSING_TRANSFERABLE_IN_TRANSFER_LIST 替换,因为它不再准确,因为现在还存在其他类型的可传输对象。

ERR_NAPI_CONS_PROTOTYPE_OBJECT#

Constructor.prototype 不是对象时,由 Node-API 使用。

ERR_NETWORK_IMPORT_BAD_RESPONSE#

稳定性: 1 - 实验

当通过网络导入模块时收到响应但无效。

ERR_NETWORK_IMPORT_DISALLOWED#

稳定性: 1 - 实验

网络模块试图加载另一个不允许加载的模块。 可能这个限制是出于安全原因。

ERR_NO_LONGER_SUPPORTED#

以不受支持的方式调用了 Node.js API,例如 Buffer.write(string, encoding, offset[, length])

ERR_OPERATION_FAILED#

操作失败。 这通常用于表示一般的异步操作失败。

ERR_OUTOFMEMORY#

通常用于识别操作导致内存不足的情况。

ERR_PARSE_HISTORY_DATA#

node:repl 模块无法解析交互式解释器历史文件中的数据。

ERR_SOCKET_CANNOT_SEND#

无法在套接字上发送数据。

ERR_STDERR_CLOSE#

试图关闭 process.stderr 流。 根据设计,Node.js 不允许用户代码关闭 stdoutstderr 流。

ERR_STDOUT_CLOSE#

试图关闭 process.stdout 流。 根据设计,Node.js 不允许用户代码关闭 stdoutstderr 流。

ERR_STREAM_READ_NOT_IMPLEMENTED#

当尝试使用尚未实现 readable._read() 的可读流时使用。

ERR_TLS_RENEGOTIATION_FAILED#

当 TLS 重新协商请求以非特定方式失败时使用。

ERR_TRANSFERRING_EXTERNALIZED_SHAREDARRAYBUFFER#

在序列化过程中遇到内存不是由 JavaScript 引擎或 Node.js 管理的 SharedArrayBuffer。 这样的 SharedArrayBuffer 无法序列化。

这只有在原生插件在 "externalized" 模式下创建 SharedArrayBuffer,或将现有的 SharedArrayBuffer 置于外部化模式时才会发生。

ERR_UNKNOWN_STDIN_TYPE#

尝试使用未知的 stdin 文件类型启动 Node.js 进程。 此错误通常表明 Node.js 本身存在错误,尽管用户代码可能会触发它。

ERR_UNKNOWN_STREAM_TYPE#

尝试使用未知的 stdoutstderr 文件类型启动 Node.js 进程。 此错误通常表明 Node.js 本身存在错误,尽管用户代码可能会触发它。

ERR_V8BREAKITERATOR#

使用了 V8 BreakIterator API,但未安装完整的 ICU 数据集。

ERR_VALUE_OUT_OF_RANGE#

当给定值超出可接受范围时使用。

ERR_VM_MODULE_NOT_LINKED#

模块必须在实例化前成功链接。

ERR_VM_MODULE_LINKING_ERRORED#

链接器函数返回链接失败的模块。

ERR_WORKER_UNSUPPORTED_EXTENSION#

用于工作程序主脚本的路径名具有未知的文件扩展名。

ERR_ZLIB_BINDING_CLOSED#

zlib 对象已经关闭后尝试使用它时使用。

ERR_CPU_USAGE#

无法处理来自 process.cpuUsage 的原生调用。