错误#

在 Node.js 中运行的应用程序通常会遇到以下几类错误:

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

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

由 Node.js 抛出的错误的 error.message 属性可能在任何版本中更改。请使用 error.code 来识别错误。对于 DOMException,使用 domException.name 来识别其类型。

错误传播与拦截#

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>,你应该始终考虑到它可能会被拒绝(rejected)。关于进程如何响应未处理的 promise rejection,请参阅 --unhandled-rejections 标志。

    const fs = require('node: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,这些 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 类的实例或继承自该类。

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 对象时,如果设置了 error.causeutil.inspect() 会递归地序列化它。

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) 

第一行格式为 <错误类名>: <错误消息>,后面跟着一系列堆栈帧(每行以 "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 内部的调用。
  • /absolute/path/to/file.js:line:column,如果该帧代表用户程序(使用 CommonJS 模块系统)或其依赖项中的调用。
  • <transport-protocol>:///url/to/module/file.mjs:line:column,如果该帧代表用户程序(使用 ES 模块系统)或其依赖项中的调用。

表示堆栈跟踪的字符串是在 error.stack 属性被访问时延迟生成的。

堆栈跟踪捕获的帧数受 Error.stackTraceLimit 或当前事件循环 tick 上可用帧数的较小者限制。

类:AssertionError#

表示断言失败。详情请见 类: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 实例表示代码或其依赖项中存在 bug。

类: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 错误处理 中定义的错误代码。

在 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 属性是一个描述失败的 syscall 的字符串。

常见系统错误#

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

  • EACCES (Permission denied): 尝试以文件访问权限禁止的方式访问文件。

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

  • ECONNREFUSED (Connection refused): 无法建立连接,因为目标机器主动拒绝了它。这通常是由于尝试连接到外部主机上不活动的服务造成的。

  • ECONNRESET (Connection reset by peer): 连接被对等方强制关闭。这通常是由于远程套接字上的连接因超时或重启而丢失造成的。通常通过 httpnet 模块遇到。

  • EEXIST (File exists): 一个现有文件是一个要求目标不存在的操作的目标。

  • EISDIR (Is a directory): 一个操作期望的是一个文件,但给定的路径名是一个目录。

  • EMFILE (Too many open files in system): 系统上允许的文件描述符最大数量已达到,并且在至少关闭一个之前无法满足另一个描述符的请求。这在并行打开许多文件时会遇到,尤其是在进程的文件描述符限制较低的系统(特别是 macOS)上。要解决低限制问题,请在将运行 Node.js 进程的同一 shell 中运行 ulimit -n 2048

  • ENOENT (No such file or directory): 通常由 fs 操作引发,表示指定路径名的某个组件不存在。给定路径下找不到任何实体(文件或目录)。

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

  • ENOTEMPTY (Directory not empty): 一个有条目的目录是一个需要空目录的操作的目标,通常是 fs.unlink

  • ENOTFOUND (DNS lookup failed): 表示 EAI_NODATAEAI_NONAME 的 DNS 失败。这不是一个标准的 POSIX 错误。

  • EPERM (Operation not permitted): 尝试执行需要提升权限的操作。

  • EPIPE (Broken pipe): 在一个没有进程读取数据的管道、套接字或 FIFO 上的写操作。通常在 nethttp 层遇到,表明正在写入的流的远程端已关闭。

  • ETIMEDOUT (Operation timed out): 连接或发送请求失败,因为连接方在一段时间后没有正确响应。通常由 httpnet 遇到。通常是未正确调用 socket.end() 的迹象。

类:TypeError#

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

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

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

异常 vs. 错误#

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_* 约定,以与 Web 平台的 AbortError 兼容。

ERR_ACCESS_DENIED#

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

ERR_AMBIGUOUS_ARGUMENT#

函数参数的使用方式表明函数签名可能被误解了。当 node:assert 模块中 assert.throws(block, message)message 参数与 block 抛出的错误消息匹配时,会抛出此错误,因为这种用法表明用户认为 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 实例,而此时所在的 JS 引擎上下文并未与 Node.js 实例关联。传递给 Buffer 方法的数据在方法返回时已经被释放。

遇到此错误时,创建 Buffer 实例的一个可能替代方案是创建一个普通的 Uint8Array,它只在结果对象的原型上有所不同。Uint8Array 通常在所有 Node.js 核心 API 中被接受,在这些 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#

在未指定 IPC 通道的情况下派生子进程时使用。

ERR_CHILD_PROCESS_STDIO_MAXBUFFER#

当主进程试图从子进程的 STDERR/STDOUT 读取数据,并且数据长度超过 maxBuffer 选项时使用。

ERR_CLOSED_MESSAGE_PORT#

尝试在一个已关闭状态的 MessagePort 实例上进行操作,通常是在调用 .close() 之后。

ERR_CONSOLE_WRITABLE_STREAM#

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

ERR_CONSTRUCT_CALL_INVALID#

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

ERR_CONSTRUCT_CALL_REQUIRED#

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

ERR_CONTEXT_NOT_INITIALIZED#

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

ERR_CPU_PROFILE_ALREADY_STARTED#

给定名称的 CPU 性能分析已经启动。

ERR_CPU_PROFILE_NOT_STARTED#

给定名称的 CPU 性能分析未启动。

ERR_CPU_PROFILE_TOO_MANY#

正在收集的 CPU 性能分析太多。

ERR_CRYPTO_ARGON2_NOT_SUPPORTED#

当前使用的 OpenSSL 版本不支持 Argon2。

ERR_CRYPTO_CUSTOM_ENGINE_NOT_SUPPORTED#

请求了一个 OpenSSL 引擎(例如,通过 clientCertEngineprivateKeyEngine TLS 选项),但当前使用的 OpenSSL 版本不支持该引擎,可能是因为编译时标志 OPENSSL_NO_ENGINE

ERR_CRYPTO_ECDH_INVALID_FORMAT#

crypto.ECDH() 类的 getPublicKey() 方法传递了无效的 format 参数值。

ERR_CRYPTO_ECDH_INVALID_PUBLIC_KEY#

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

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.digest() 方法对于每个 Hash 对象实例最多只能调用一次。

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 Web Key。

ERR_CRYPTO_INVALID_KEYLEN#

提供了无效的密钥长度。

ERR_CRYPTO_INVALID_KEYPAIR#

提供了无效的密钥对。

ERR_CRYPTO_INVALID_KEYTYPE#

提供了无效的密钥类型。

ERR_CRYPTO_INVALID_KEY_OBJECT_TYPE#

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

ERR_CRYPTO_INVALID_MESSAGELEN#

提供了无效的消息长度。

ERR_CRYPTO_INVALID_SCRYPT_PARAMS#

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

ERR_CRYPTO_INVALID_STATE#

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

ERR_CRYPTO_INVALID_TAG_LENGTH#

提供了无效的认证标签长度。

ERR_CRYPTO_JOB_INIT_FAILED#

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

ERR_CRYPTO_JWK_UNSUPPORTED_CURVE#

密钥的椭圆曲线未在 JSON Web Key 椭圆曲线注册表中注册使用。

ERR_CRYPTO_JWK_UNSUPPORTED_KEY_TYPE#

密钥的非对称密钥类型未在 JSON Web Key 类型注册表中注册使用。

ERR_CRYPTO_KEM_NOT_SUPPORTED#

尝试使用 KEM 操作,而 Node.js 未编译 OpenSSL KEM 支持。

ERR_CRYPTO_OPERATION_FAILED#

一个加密操作因未指定的原因失败。

ERR_CRYPTO_PBKDF2_ERROR#

PBKDF2 算法因未指定的原因失败。OpenSSL 没有提供更多细节,因此 Node.js 也没有。

ERR_CRYPTO_SCRYPT_NOT_SUPPORTED#

Node.js 在编译时没有 scrypt 支持。官方发布二进制文件不可能出现这种情况,但自定义构建(包括发行版构建)可能会发生。

ERR_CRYPTO_SIGN_KEY_REQUIRED#

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

ERR_CRYPTO_TIMING_SAFE_EQUAL_LENGTH#

使用不同长度的 BufferTypedArrayDataView 参数调用了 crypto.timingSafeEqual()

ERR_CRYPTO_UNKNOWN_CIPHER#

指定了未知的密码。

ERR_CRYPTO_UNKNOWN_DH_GROUP#

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

ERR_CRYPTO_UNSUPPORTED_OPERATION#

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

ERR_DEBUGGER_ERROR#

使用调试器时发生错误。

ERR_DEBUGGER_STARTUP_ERROR#

调试器等待所需的主机/端口变为空闲时超时。

ERR_DIR_CLOSED#

fs.Dir 先前已关闭。

ERR_DIR_CONCURRENT_OPERATION#

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

ERR_DLOPEN_DISABLED#

已使用 --no-addons 禁用了本地插件的加载。

ERR_DLOPEN_FAILED#

调用 process.dlopen() 失败。

ERR_DNS_SET_SERVERS_FAILED#

c-ares 设置 DNS 服务器失败。

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_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#

尝试读取一个大于 fs.readFile() 所支持的 2 GiB 限制的文件。这不是 Buffer 的限制,而是一个内部 I/O 约束。要处理更大的文件,请考虑使用 fs.createReadStream() 来分块读取文件。

ERR_FS_WATCH_QUEUE_OVERFLOW#

排队等待处理的文件系统事件数量超过了 fs.watch()maxQueue 指定的大小。

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#

Http2Session 收到来自连接对等方的 GOAWAY 帧后,可能无法打开新的 HTTP/2 流。

ERR_HTTP2_HEADERS_AFTER_RESPOND#

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

ERR_HTTP2_HEADERS_SENT#

尝试发送多个响应头部。

ERR_HTTP2_HEADER_SINGLE_VALUE#

为一个要求只能有单个值的 HTTP/2 头部字段提供了多个值。

ERR_HTTP2_INFO_STATUS_NOT_ALLOWED#

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

ERR_HTTP2_INVALID_CONNECTION_HEADERS#

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

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 实例的长度必须是六的倍数。

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 ping 已被取消。

ERR_HTTP2_PING_LENGTH#

HTTP/2 ping 的有效载荷长度必须正好是 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_CUSTOM_SETTINGS#

支持的自定义设置数量(10)已超出。

ERR_HTTP2_TOO_MANY_INVALID_FRAMES#

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

ERR_HTTP2_TRAILERS_ALREADY_SENT#

拖尾标头(Trailing headers)已在 Http2Stream 上发送。

ERR_HTTP2_TRAILERS_NOT_READY#

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

ERR_HTTP2_UNSUPPORTED_PROTOCOL#

http2.connect() 接收到一个使用除 http:https: 以外协议的 URL。

ERR_HTTP_BODY_NOT_ALLOWED#

当向不允许包含内容的 HTTP 响应中写入时,会抛出错误。

ERR_HTTP_CONTENT_LENGTH_MISMATCH#

响应体大小与指定的 content-length 标头值不匹配。

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_ILLEGAL_CONSTRUCTOR#

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

ERR_IMPORT_ATTRIBUTE_MISSING#

缺少导入属性,导致无法导入指定的模块。

ERR_IMPORT_ATTRIBUTE_TYPE_INCOMPATIBLE#

提供了导入 type 属性,但指定的模块是不同类型。

ERR_IMPORT_ATTRIBUTE_UNSUPPORTED#

此版本的 Node.js 不支持某个导入属性。

ERR_INCOMPATIBLE_OPTION_PAIR#

一对选项互不兼容,不能同时使用。

ERR_INPUT_TYPE_NOT_ALLOWED#

--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 中存在一个 bug 或对 Node.js 内部函数的使用不正确。要修复此错误,请在 https://github.com/nodejs/node/issues 上提出一个问题。

ERR_INVALID_ADDRESS#

提供的地址无法被 Node.js API 理解。

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 的 ID 永远不应该发生。

ERR_INVALID_BUFFER_SIZE#

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

ERR_INVALID_CHAR#

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

ERR_INVALID_CURSOR_POS#

在没有指定列的情况下,无法将给定流上的光标移动到指定的行。

ERR_INVALID_FD#

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

ERR_INVALID_FD_TYPE#

文件描述符('fd')类型无效。

ERR_INVALID_FILE_URL_HOST#

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

ERR_INVALID_FILE_URL_PATH#

一个使用 file: URL 的 Node.js API(例如 fs 模块中的某些函数)遇到了一个带有不兼容路径的 file URL。确定路径是否可用的确切语义取决于平台。

抛出的错误对象包含一个 input 属性,其中包含无效 file: URL 的 URL 对象。

ERR_INVALID_HANDLE_TYPE#

尝试通过 IPC 通信通道向子进程发送不受支持的“句柄”。更多信息请参阅 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#

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

ERR_INVALID_OBJECT_DEFINE_PROPERTY#

在对象的属性上设置无效属性时发生错误。

ERR_INVALID_PACKAGE_CONFIG#

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

ERR_INVALID_PACKAGE_TARGET#

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

ERR_INVALID_PROTOCOL#

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

ERR_INVALID_REPL_EVAL_CONFIG#

REPL 配置中同时设置了 breakEvalOnSiginteval 选项,这是不支持的。

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 作为 stdio 输入提供给了一个异步的 fork。更多信息请参阅 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_TUPLE#

提供给 WHATWG URLSearchParams 构造函数iterable 中的一个元素不代表 [name, value] 元组——也就是说,如果一个元素不可迭代,或者不恰好包含两个元素。

ERR_INVALID_TYPESCRIPT_SYNTAX#

提供的 TypeScript 语法无效。

ERR_INVALID_URI#

传递了无效的 URI。

ERR_INVALID_URL#

WHATWG URL 构造函数 或旧版 url.parse() 传递了无效的 URL 进行解析。抛出的错误对象通常有一个额外的属性 'input',其中包含解析失败的 URL。

ERR_INVALID_URL_PATTERN#

WHATWG URLPattern 构造函数 传递了无效的 URLPattern 进行解析。

ERR_INVALID_URL_SCHEME#

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

ERR_IPC_CHANNEL_CLOSED#

尝试使用已经关闭的 IPC 通信通道。

ERR_IPC_DISCONNECTED#

尝试断开已经断开的 IPC 通信通道。更多信息请参阅 child_process 模块的文档。

ERR_IPC_ONE_PIPE#

尝试使用多于一个 IPC 通信通道来创建子 Node.js 进程。更多信息请参阅 child_process 模块的文档。

ERR_IPC_SYNC_FORK#

尝试与同步分叉的 Node.js 进程打开一个 IPC 通信通道。更多信息请参阅 child_process 模块的文档。

ERR_IP_BLOCKED#

IP 被 net.BlockList 阻止。

ERR_LOADER_CHAIN_INCOMPLETE#

ESM 加载器钩子返回时没有调用 next(),也没有明确表示短路。

ERR_LOAD_SQLITE_EXTENSION#

加载 SQLite 扩展时发生错误。

ERR_MEMORY_ALLOCATION_FAILED#

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

ERR_MESSAGE_TARGET_CONTEXT_UNAVAILABLE#

发布到 MessagePort 的消息无法在目标 vm Context 中反序列化。目前并非所有 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 平台不支持创建 Worker。这是由于嵌入器对 Worker 的支持不足造成的。特别地,这个错误不会在 Node.js 的标准构建中发生。

ERR_MODULE_LINK_MISMATCH#

一个模块无法链接,因为其中的相同模块请求未解析为同一个模块。

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_NON_CONTEXT_AWARE_DISABLED#

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

ERR_NOT_BUILDING_SNAPSHOT#

尝试使用只能在构建 V8 启动快照时使用的操作,尽管 Node.js 并未在构建快照。

ERR_NOT_IN_SINGLE_EXECUTABLE_APPLICATION#

当不在单可执行文件应用程序中时,无法执行该操作。

ERR_NOT_SUPPORTED_IN_SNAPSHOT#

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

ERR_NO_CRYPTO#

在 Node.js 未编译 OpenSSL 加密支持的情况下,尝试使用加密功能。

ERR_NO_ICU#

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

ERR_NO_TYPESCRIPT#

尝试使用需要原生 TypeScript 支持的功能,但 Node.js 未编译 TypeScript 支持。

ERR_OPERATION_FAILED#

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

ERR_OPTIONS_BEFORE_BOOTSTRAPPING#

在引导完成之前尝试获取选项。

ERR_OUT_OF_RANGE#

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

ERR_PACKAGE_IMPORT_NOT_DEFINED#

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

ERR_PACKAGE_PATH_NOT_EXPORTED#

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

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_PROXY_INVALID_CONFIG#

由于代理配置无效,代理请求失败。

ERR_PROXY_TUNNEL#

当启用 NODE_USE_ENV_PROXY--use-env-proxy 时,建立代理隧道失败。

ERR_QUIC_APPLICATION_ERROR#

稳定性:1 - 实验性

发生了 QUIC 应用程序错误。

ERR_QUIC_CONNECTION_FAILED#

稳定性:1 - 实验性

建立 QUIC 连接失败。

ERR_QUIC_ENDPOINT_CLOSED#

稳定性:1 - 实验性

QUIC 端点因错误而关闭。

ERR_QUIC_OPEN_STREAM_FAILED#

稳定性:1 - 实验性

打开 QUIC 流失败。

ERR_QUIC_TRANSPORT_ERROR#

稳定性:1 - 实验性

发生了 QUIC 传输错误。

ERR_QUIC_VERSION_NEGOTIATION_ERROR#

稳定性:1 - 实验性

QUIC 会话失败,因为需要版本协商。

ERR_REQUIRE_ASYNC_MODULE#

稳定性:1 - 实验性

当尝试 require() 一个 ES 模块时,发现该模块是异步的。也就是说,它包含顶层 await。

要查看顶层 await 的位置,请使用 --experimental-print-required-tla(这将在查找顶层 await 之前执行模块)。

ERR_REQUIRE_CYCLE_MODULE#

稳定性:1 - 实验性

当尝试 require() 一个 ES 模块时,一个 CommonJS 到 ESM 或 ESM 到 CommonJS 的边界参与了一个直接循环。这是不允许的,因为 ES 模块不能在已经被评估时再次评估。

为避免循环,循环中涉及的 require() 调用不应发生在 ES 模块(通过 createRequire())或 CommonJS 模块的顶层,而应在内部函数中惰性执行。

ERR_REQUIRE_ESM#

稳定性: 0 - 废弃

尝试 require() 一个 ES 模块

此错误已被弃用,因为 require() 现在支持加载同步 ES 模块。当 require() 遇到包含顶层 await 的 ES 模块时,它将抛出 ERR_REQUIRE_ASYNC_MODULE

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_SINGLE_EXECUTABLE_APPLICATION_ASSET_NOT_FOUND#

向单可执行文件应用程序 API 传递了一个用于识别资产的密钥,但找不到匹配项。

ERR_SOCKET_ALREADY_BOUND#

尝试绑定一个已经绑定的套接字。

ERR_SOCKET_BAD_BUFFER_SIZE#

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

ERR_SOCKET_BAD_PORT#

一个期望端口号 >= 0 且 < 65536 的 API 函数收到了一个无效值。

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_SOURCE_MAP_CORRUPT#

源映射无法解析,因为它不存在或已损坏。

ERR_SOURCE_MAP_MISSING_SOURCE#

未找到从源映射导入的文件。

ERR_SOURCE_PHASE_NOT_DEFINED#

提供的模块导入没有为源阶段导入语法 import source x from 'x'import.source(x) 提供源阶段导入表示。

ERR_SQLITE_ERROR#

SQLite 返回了一个错误。

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_UNABLE_TO_PIPE#

尝试管道连接到管道中一个已关闭或已销毁的流。

ERR_STREAM_UNSHIFT_AFTER_END_EVENT#

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

ERR_STREAM_WRAP#

如果在 Socket 上设置了字符串解码器,或者解码器处于 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_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_IDENTITY_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 服务器端套接字发出服务器名称指示(Server Name Indication),这仅对客户端有效。

ERR_TRACE_EVENTS_CATEGORY_REQUIRED#

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

ERR_TRACE_EVENTS_UNAVAILABLE#

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

ERR_TRAILING_JUNK_AFTER_STREAM_END#

在压缩流结束后发现尾随垃圾数据。当在压缩流(例如,zlib 或 gzip 解压缩)结束后检测到额外、意外的数据时,会抛出此错误。

ERR_TRANSFORM_ALREADY_TRANSFORMING#

一个 Transform 流在仍在转换时完成了。

ERR_TRANSFORM_WITH_LENGTH_0#

一个 Transform 流完成时,写入缓冲区中仍有数据。

ERR_TTY_INIT_FAILED#

由于系统错误,TTY 初始化失败。

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#

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

ERR_UNKNOWN_MODULE_FORMAT#

尝试加载一个具有未知或不支持的格式的模块。

ERR_UNKNOWN_SIGNAL#

向期望有效信号的 API(例如 subprocess.kill())传递了无效或未知的进程信号。

ERR_UNSUPPORTED_DIR_IMPORT#

不支持 import 目录 URL。请改为使用包名自引用一个包,并在 package.json 文件的 "exports" 字段中定义一个自定义子路径

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

ERR_UNSUPPORTED_ESM_URL_SCHEME#

不支持使用除 filedata 之外的 URL 方案进行 import

ERR_UNSUPPORTED_NODE_MODULES_TYPE_STRIPPING#

不支持对 node_modules 目录下的文件进行类型剥离。

ERR_UNSUPPORTED_RESOLVE_REQUEST#

尝试解析一个无效的模块引用者。当导入或调用 import.meta.resolve() 时,如果出现以下情况,可能会发生此错误:

  • 从一个 URL 方案不是 file 的模块中导入一个不是内置模块的裸说明符。
  • 从一个 URL 方案不是特殊方案的模块中导入一个相对 URL
try {
  // Trying to import the package 'bare-specifier' from a `data:` URL module:
  await import('data:text/javascript,import "bare-specifier"');
} catch (e) {
  console.log(e.code); // ERR_UNSUPPORTED_RESOLVE_REQUEST
} 

ERR_UNSUPPORTED_TYPESCRIPT_SYNTAX#

提供的 TypeScript 语法不受支持。当使用需要类型剥离进行转换的 TypeScript 语法时,可能会发生这种情况。

ERR_USE_AFTER_CLOSE#

尝试使用已关闭的东西。

ERR_VALID_PERFORMANCE_ENTRY_TYPE#

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

ERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING#

未指定动态导入回调。

ERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING_FLAG#

在没有 --experimental-vm-modules 的情况下调用了动态导入回调。

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_MESSAGING_ERRORED#

稳定性:1.1 - 活跃开发

目标线程在处理通过 postMessageToThread() 发送的消息时抛出了一个错误。

ERR_WORKER_MESSAGING_FAILED#

稳定性:1.1 - 活跃开发

postMessageToThread() 中请求的线程无效或没有 workerMessage 监听器。

ERR_WORKER_MESSAGING_SAME_THREAD#

稳定性:1.1 - 活跃开发

postMessageToThread() 中请求的线程 ID 是当前线程 ID。

ERR_WORKER_MESSAGING_TIMEOUT#

稳定性:1.1 - 活跃开发

通过 postMessageToThread() 发送消息超时。

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 对象失败。

ERR_ZSTD_INVALID_PARAM#

在构造 Zstd 流期间传递了无效的参数键。

HPE_CHUNK_EXTENSIONS_OVERFLOW#

为分块扩展接收了太多数据。为了防止恶意或配置不当的客户端,如果接收到的数据超过 16 KiB,则会发出一个带有此代码的 Error

HPE_HEADER_OVERFLOW#

接收到的 HTTP 标头数据过多。为了防止恶意或配置不当的客户端,如果接收到的 HTTP 标头数据超过 maxHeaderSize,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_CPU_USAGE#

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

ERR_CRYPTO_HASH_DIGEST_NO_UTF16#

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

ERR_CRYPTO_SCRYPT_INVALID_PARAMETER#

crypto.scrypt()crypto.scryptSync() 传递了不兼容的选项组合。新版本的 Node.js 使用错误码 ERR_INCOMPATIBLE_OPTION_PAIR,这与其他 API 一致。

ERR_FS_INVALID_SYMLINK_TYPE#

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

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_IMPORT_ASSERTION_TYPE_FAILED#

导入断言失败,导致指定模块无法导入。

ERR_IMPORT_ASSERTION_TYPE_MISSING#

缺少导入断言,导致指定模块无法导入。

ERR_IMPORT_ASSERTION_TYPE_UNSUPPORTED#

此版本的 Node.js 不支持某个导入属性。

ERR_INDEX_OUT_OF_RANGE#

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

ERR_INVALID_OPT_VALUE#

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

ERR_INVALID_OPT_VALUE_ENCODING#

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

ERR_INVALID_PERFORMANCE_MARK#

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

ERR_INVALID_TRANSFER_OBJECT#

postMessage() 传递了无效的传输对象。

ERR_MANIFEST_ASSERT_INTEGRITY#

试图加载一个资源,但该资源与策略清单定义的完整性不匹配。有关更多信息,请参阅策略清单的文档。

ERR_MANIFEST_DEPENDENCY_MISSING#

试图加载一个资源,但该资源未在尝试加载它的位置的依赖项列表中列出。有关更多信息,请参阅策略清单的文档。

ERR_MANIFEST_INTEGRITY_MISMATCH#

试图加载策略清单,但清单中某个资源有多个条目且彼此不匹配。更新清单条目使其匹配以解决此错误。有关更多信息,请参阅策略清单的文档。

ERR_MANIFEST_INVALID_RESOURCE_FIELD#

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

ERR_MANIFEST_INVALID_SPECIFIER#

策略清单资源的某个依赖映射值无效。更新清单条目使其匹配以解决此错误。有关更多信息,请参阅策略清单的文档。

ERR_MANIFEST_PARSE_POLICY#

试图加载策略清单,但清单无法被解析。有关更多信息,请参阅策略清单的文档。

ERR_MANIFEST_TDZ#

试图从策略清单中读取,但清单尚未初始化。这很可能是 Node.js 的一个 bug。

ERR_MANIFEST_UNKNOWN_ONERROR#

加载的策略清单为其“onerror”行为设置了一个未知的值。有关更多信息,请参阅策略清单的文档。

ERR_MISSING_MESSAGE_PORT_IN_TRANSFER_LIST#

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

ERR_MISSING_TRANSFERABLE_IN_TRANSFER_LIST#

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

在 v15.0.0 之前的 Node.js 版本中,此处使用的错误代码是 ERR_MISSING_MESSAGE_PORT_IN_TRANSFER_LIST。然而,可传输对象的类型集合已经扩展,覆盖了比 MessagePort 更多的类型。

ERR_NAPI_CONS_PROTOTYPE_OBJECT#

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

ERR_NAPI_TSFN_START_IDLE_LOOP#

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

ERR_NAPI_TSFN_STOP_IDLE_LOOP#

一旦队列中没有更多项目,空闲循环必须被暂停。此错误表示空闲循环未能停止。

ERR_NO_LONGER_SUPPORTED#

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

ERR_OUTOFMEMORY#

通常用于标识某个操作导致了内存不足的情况。

ERR_PARSE_HISTORY_DATA#

node:repl 模块无法解析来自 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_TAP_LEXER_ERROR#

一个表示词法分析器状态失败的错误。

ERR_TAP_PARSER_ERROR#

一个表示解析器状态失败的错误。有关导致错误的标记的附加信息可通过 cause 属性获得。

ERR_TAP_VALIDATION_ERROR#

此错误表示 TAP 验证失败。

ERR_TLS_RENEGOTIATION_FAILED#

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

ERR_TRANSFERRING_EXTERNALIZED_SHAREDARRAYBUFFER#

在序列化期间遇到了一个其内存不由 JavaScript 引擎或 Node.js 管理的 SharedArrayBuffer。这样的 SharedArrayBuffer 无法被序列化。

这只可能在原生插件以“外部化”模式创建 SharedArrayBuffer,或将现有的 SharedArrayBuffer 置于外部化模式时发生。

ERR_UNKNOWN_STDIN_TYPE#

试图使用未知的 stdin 文件类型启动 Node.js 进程。此错误通常表示 Node.js 自身的 bug,尽管用户代码也可能触发它。

ERR_UNKNOWN_STREAM_TYPE#

试图使用未知的 stdoutstderr 文件类型启动 Node.js 进程。此错误通常表示 Node.js 自身的 bug,尽管用户代码也可能触发它。

ERR_V8BREAKITERATOR#

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

ERR_VALUE_OUT_OF_RANGE#

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

ERR_VM_MODULE_LINKING_ERRORED#

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

ERR_VM_MODULE_NOT_LINKED#

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

ERR_WORKER_UNSUPPORTED_EXTENSION#

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

ERR_ZLIB_BINDING_CLOSED#

当试图使用一个已经关闭的 zlib 对象时使用。

OpenSSL 错误代码#

时间有效性错误#

CERT_NOT_YET_VALID#

证书尚未生效:notBefore 日期晚于当前时间。

CERT_HAS_EXPIRED#

证书已过期:notAfter 日期早于当前时间。

CRL_NOT_YET_VALID#

证书吊销列表(CRL)的颁发日期在未来。

CRL_HAS_EXPIRED#

证书吊销列表(CRL)已过期。

CERT_REVOKED#

证书已被吊销;它在证书吊销列表(CRL)上。

信任或证书链相关错误#

UNABLE_TO_GET_ISSUER_CERT#

无法找到所查证书的颁发者证书。这通常意味着受信任的证书列表不完整。

UNABLE_TO_GET_ISSUER_CERT_LOCALLY#

证书的颁发者未知。如果颁发者未包含在受信任的证书列表中,就会发生这种情况。

DEPTH_ZERO_SELF_SIGNED_CERT#

传入的证书是自签名的,并且在受信任的证书列表中找不到相同的证书。

SELF_SIGNED_CERT_IN_CHAIN#

证书的颁发者未知。如果颁发者未包含在受信任的证书列表中,就会发生这种情况。

CERT_CHAIN_TOO_LONG#

证书链长度超过了最大深度。

UNABLE_TO_GET_CRL#

无法找到证书引用的 CRL。

UNABLE_TO_VERIFY_LEAF_SIGNATURE#

无法验证任何签名,因为链中只包含一个证书且它不是自签名的。

CERT_UNTRUSTED#

根证书颁发机构(CA)未被标记为对指定目的可信。

基本扩展错误#

INVALID_CA#

CA 证书无效。它要么不是一个 CA,要么其扩展与提供的目的不一致。

PATH_LENGTH_EXCEEDED#

已超出 basicConstraints 的 pathlength 参数。

名称相关错误#

HOSTNAME_MISMATCH#

证书与提供的主机名不匹配。

用法和策略错误#

INVALID_PURPOSE#

提供的证书不能用于指定目的。

CERT_REJECTED#

根 CA 被标记为拒绝指定目的。

格式错误#

CERT_SIGNATURE_FAILURE#

证书签名无效。

CRL_SIGNATURE_FAILURE#

证书吊销列表(CRL)的签名无效。

ERROR_IN_CERT_NOT_BEFORE_FIELD#

证书的 notBefore 字段包含无效时间。

ERROR_IN_CERT_NOT_AFTER_FIELD#

证书的 notAfter 字段包含无效时间。

ERROR_IN_CRL_LAST_UPDATE_FIELD#

CRL 的 lastUpdate 字段包含无效时间。

ERROR_IN_CRL_NEXT_UPDATE_FIELD#

CRL 的 nextUpdate 字段包含无效时间。

UNABLE_TO_DECRYPT_CERT_SIGNATURE#

无法解密证书签名。这意味着无法确定实际的签名值,而不是它与期望值不匹配,这仅对 RSA 密钥有意义。

UNABLE_TO_DECRYPT_CRL_SIGNATURE#

无法解密证书吊销列表(CRL)的签名:这意味着无法确定实际的签名值,而不是它与期望值不匹配。

UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY#

无法读取证书 SubjectPublicKeyInfo 中的公钥。

其他 OpenSSL 错误#

OUT_OF_MEM#

尝试分配内存时发生错误。这应该永远不会发生。