Skip to content

错误

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

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

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

错误传播和拦截

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

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

js
// 抛出 ReferenceError,因为 z 未定义。
try {
  const m = 1;
  const n = m + z;
} catch (err) {
  // 在这里处理错误。
}

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

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

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

  • 一些异步方法返回一个 <Promise>,你应该始终考虑到它可能会被拒绝。 有关进程如何对未处理的 promise 拒绝做出反应,请参阅 --unhandled-rejections 标志。
  • 大多数接受 callback 函数的异步方法都会接受一个 Error 对象,该对象作为该函数的第一个参数传递。 如果第一个参数不是 null 并且是 Error 的一个实例,则表示发生了应该处理的错误。
  • 当在一个属于 EventEmitter 的对象上调用异步方法时,错误可以被路由到该对象的 'error' 事件。
  • Node.js API 中少数通常是异步的方法仍然可以使用 throw 机制来引发必须使用 try…catch 处理的异常。 没有此类方法的完整列表; 请参阅每个方法的文档以确定所需的适当错误处理机制。

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

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

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

setImmediate(() => {
  // 这将导致进程崩溃,因为没有添加“error”事件处理程序。
  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() 的位置。

js
const myObject = {};
Error.captureStackTrace(myObject);
myObject.stack;  // 类似于 `new Error().stack`

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

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

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

js
function a() {
  b();
}

function b() {
  c();
}

function c() {
  // 创建一个没有堆栈跟踪的错误,以避免计算两次堆栈跟踪。
  const { stackTraceLimit } = Error;
  Error.stackTraceLimit = 0;
  const error = new Error();
  Error.stackTraceLimit = stackTraceLimit;

  // 捕获函数 b 之上的堆栈跟踪
  Error.captureStackTrace(error, b); // 函数 c 和 b 都不包含在堆栈跟踪中
  throw error;
}

a();

Error.stackTraceLimit

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

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

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

error.cause

添加于: v16.9.0

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

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

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

js
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 时)。

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

error.stack

error.stack 属性是一个字符串,描述了代码中实例化 Error 的位置。

bash
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 调用的帧将不会出现在堆栈跟踪中:

js
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 模块系统)或其依赖项中的调用。
  • \<传输协议\>:///url/to/module/file.mjs:line:column,如果帧表示用户程序(使用 ES 模块系统)或其依赖项中的调用。

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

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

类: AssertionError

表示断言失败。 有关详细信息,请参阅 类: assert.AssertionError

类: RangeError

表示提供的参数不在函数的允许值集合或范围内; 无论那是数值范围,还是给定函数参数的选项集之外。

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

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

类: ReferenceError

表示试图访问未定义的变量。 此类错误通常表示代码中存在拼写错误,或者程序以其他方式损坏。

虽然客户端代码可以生成和传播这些错误,但在实践中,只有 V8 会这样做。

js
doesNotExist;
// 抛出 ReferenceError,doesNotExist 不是此程序中的变量。

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

类: SyntaxError

表示程序不是有效的 JavaScript。 这些错误可能仅在代码评估后生成和传播。 代码评估可能因 evalFunctionrequirevm 而发生。 这些错误几乎总是表明程序已损坏。

js
try {
  require('node:vm').runInThisContext('binary ! isNotOk');
} catch (err) {
  // 'err' 将是 SyntaxError。
}

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

类: SystemError

当 Node.js 运行时环境中发生异常时,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) 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() 的标志。

类: TypeError

表示提供的参数不是允许的类型。 例如,将函数传递给需要字符串的参数将引发 TypeError

js
require('node:url').parse(() => { });
// 抛出 TypeError,因为它需要一个字符串。

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

加入于: v15.0.0

当操作被中止时使用(通常使用 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

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

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

当派生子进程时未指定 IPC 通道时使用。

ERR_CHILD_PROCESS_STDIO_MAXBUFFER

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

ERR_CLOSED_MESSAGE_PORT

[历史记录]

版本变更
v16.2.0, v14.17.1重新引入了错误消息。
v11.12.0移除了错误消息。
v10.5.0添加于: v10.5.0

尝试使用处于关闭状态的 MessagePort 实例,通常在调用 .close() 之后。

ERR_CONSOLE_WRITABLE_STREAM

实例化 Console 时没有 stdout 流,或者 Console 有一个不可写的 stdoutstderr 流。

ERR_CONSTRUCT_CALL_INVALID

添加于: v12.5.0

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

ERR_CONSTRUCT_CALL_REQUIRED

调用类的构造函数时没有使用 new

ERR_CONTEXT_NOT_INITIALIZED

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

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 对象的实例只能调用一次 hash.digest() 方法。

ERR_CRYPTO_HASH_UPDATE_FAILED

hash.update() 因任何原因失败。 这应该很少发生,甚至根本不发生。

ERR_CRYPTO_INCOMPATIBLE_KEY

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

ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS

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

ERR_CRYPTO_INITIALIZATION_FAILED

新增于: v15.0.0

加密子系统初始化失败。

ERR_CRYPTO_INVALID_AUTH_TAG

新增于: v15.0.0

提供了无效的认证标签。

ERR_CRYPTO_INVALID_COUNTER

新增于: v15.0.0

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

ERR_CRYPTO_INVALID_CURVE

新增于: v15.0.0

提供了无效的椭圆曲线。

ERR_CRYPTO_INVALID_DIGEST

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

ERR_CRYPTO_INVALID_IV

新增于: v15.0.0

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

ERR_CRYPTO_INVALID_JWK

新增于: v15.0.0

提供了无效的 JSON Web 密钥。

ERR_CRYPTO_INVALID_KEYLEN

新增于: v15.0.0

提供了无效的密钥长度。

ERR_CRYPTO_INVALID_KEYPAIR

新增于: v15.0.0

提供了无效的密钥对。

ERR_CRYPTO_INVALID_KEYTYPE

新增于: v15.0.0

提供了无效的密钥类型。

ERR_CRYPTO_INVALID_KEY_OBJECT_TYPE

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

ERR_CRYPTO_INVALID_MESSAGELEN

新增于: v15.0.0

提供了无效的消息长度。

ERR_CRYPTO_INVALID_SCRYPT_PARAMS

新增于: v15.0.0

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

ERR_CRYPTO_INVALID_STATE

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

ERR_CRYPTO_INVALID_TAG_LENGTH

新增于: v15.0.0

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

ERR_CRYPTO_JOB_INIT_FAILED

新增于: v15.0.0

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

ERR_CRYPTO_JWK_UNSUPPORTED_CURVE

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

ERR_CRYPTO_JWK_UNSUPPORTED_KEY_TYPE

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

ERR_CRYPTO_OPERATION_FAILED

新增于: v15.0.0

由于其他未指定的原因,密码操作失败。

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

新增于: v15.0.0, v14.18.0

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

ERR_DEBUGGER_ERROR

新增于: v16.4.0, v14.17.4

调试器发生错误。

ERR_DEBUGGER_STARTUP_ERROR

新增于: v16.4.0, v14.17.4

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

ERR_DIR_CLOSED

fs.Dir 之前已关闭。

ERR_DIR_CONCURRENT_OPERATION

新增于: v14.3.0

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

ERR_DLOPEN_DISABLED

新增于: v16.10.0, v14.19.0

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

ERR_DLOPEN_FAILED

新增于: v15.0.0

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 被一个 falsy 值拒绝。

ERR_FEATURE_UNAVAILABLE_ON_PLATFORM

添加于: v14.0.0

当使用当前运行 Node.js 的平台不可用的功能时使用。

ERR_FS_CP_DIR_TO_NON_DIR

添加于: v16.7.0

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

ERR_FS_CP_EEXIST

添加于: v16.7.0

尝试使用 fs.cp() 覆盖已经存在的文件,并且 forceerrorOnExist 设置为 true

ERR_FS_CP_EINVAL

添加于: v16.7.0

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

ERR_FS_CP_FIFO_PIPE

添加于: v16.7.0

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

ERR_FS_CP_NON_DIR_TO_DIR

添加于: v16.7.0

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

ERR_FS_CP_SOCKET

添加于: v16.7.0

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

Added in: v16.7.0

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

ERR_FS_CP_UNKNOWN

Added in: v16.7.0

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

ERR_FS_EISDIR

路径是一个目录。

ERR_FS_FILE_TOO_LARGE

尝试读取一个文件,该文件的大小大于 Buffer 允许的最大大小。

ERR_HTTP2_ALTSVC_INVALID_ORIGIN

HTTP/2 ALTSVC 帧需要一个有效的 origin。

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/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 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

Added in: v15.14.0

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

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: 以外任何协议的 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 已经分配了一个 socket。

ERR_HTTP_SOCKET_ENCODING

根据 RFC 7230 Section 3,不允许更改 socket 编码。

ERR_HTTP_TRAILER_INVALID

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

ERR_ILLEGAL_CONSTRUCTOR

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

ERR_IMPORT_ATTRIBUTE_MISSING

Added in: v21.1.0

缺少导入属性,阻止导入指定的模块。

ERR_IMPORT_ATTRIBUTE_TYPE_INCOMPATIBLE

加入于: v21.1.0

提供了一个 import type 属性,但指定的模块类型不匹配。

ERR_IMPORT_ATTRIBUTE_UNSUPPORTED

加入于: v21.0.0, v20.10.0, v18.19.0

此版本的 Node.js 不支持 import 属性。

ERR_INCOMPATIBLE_OPTION_PAIR

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

ERR_INPUT_TYPE_NOT_ALLOWED

[稳定度: 1 - 实验性]

稳定度: 1 稳定性: 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

提供的地址 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。 确定是否可以使用路径的确切语义取决于平台。

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

新增于: v15.0.0, v14.18.0

试图加载一个不存在或以其他方式无效的模块。

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

新增于: v15.0.0

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

ERR_INVALID_SYNC_FORK_INPUT

已将 BufferTypedArrayDataViewstring 作为 stdio 输入提供给异步 fork。 有关更多信息,请参见 child_process 模块的文档。

ERR_INVALID_THIS

一个 Node.js API 函数被调用时,使用了不兼容的 this 值。

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

const buf = Buffer.alloc(1);
urlSearchParams.has.call(buf, 'foo');
// 抛出一个类型错误,错误码为 'ERR_INVALID_THIS'

ERR_INVALID_TUPLE

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

ERR_INVALID_TYPESCRIPT_SYNTAX

新增于: v23.0.0

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

ERR_INVALID_URI

传递了一个无效的 URI。

ERR_INVALID_URL

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

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

试图打开与同步 fork 的 Node.js 进程的 IPC 通信通道。 更多信息请参考 child_process 模块的文档。

ERR_IP_BLOCKED

IP 被 net.BlockList 阻止。

ERR_LOADER_CHAIN_INCOMPLETE

新增于: v18.6.0, v16.17.0

一个 ESM 加载器钩子返回时,没有调用 next() 也没有显式地发出短路信号。

ERR_LOAD_SQLITE_EXTENSION

新增于: v23.5.0

加载 SQLite 扩展时发生错误。

ERR_MEMORY_ALLOCATION_FAILED

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

ERR_MESSAGE_TARGET_CONTEXT_UNAVAILABLE

新增于: v14.5.0, v12.19.0

发布到 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 平台不支持创建 Workers。 这是由于缺少对 Workers 的嵌入器支持造成的。 特别是,此错误不会发生在 Node.js 的标准构建中。

ERR_MODULE_NOT_FOUND

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

ERR_MULTIPLE_CALLBACK

一个回调被多次调用。

回调几乎总是只应该被调用一次,因为查询要么被满足,要么被拒绝,而不能同时发生。 后者可以通过多次调用回调来实现。

ERR_NAPI_CONS_FUNCTION

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

ERR_NAPI_INVALID_DATAVIEW_ARGS

在调用 napi_create_dataview() 时,给定的 offset 超出了 dataview 的范围,或者 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

添加于: v21.7.0, v20.12.0

该操作无法在单可执行应用程序中执行。

ERR_NOT_SUPPORTED_IN_SNAPSHOT

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

ERR_NO_CRYPTO

尝试使用加密功能,但 Node.js 在编译时没有包含 OpenSSL 加密支持。

ERR_NO_ICU

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

ERR_NO_TYPESCRIPT

新增于: v23.0.0

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

ERR_OPERATION_FAILED

新增于: v15.0.0

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

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

新增于: v18.3.0, v16.17.0

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

ERR_PARSE_ARGS_UNEXPECTED_POSITIONAL

新增于: v18.3.0, v16.17.0

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

ERR_PARSE_ARGS_UNKNOWN_OPTION

新增于: v18.3.0, v16.17.0

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_QUIC_APPLICATION_ERROR

添加于: v23.4.0

[稳定度: 1 - 实验性]

稳定度: 1 稳定度: 1 - 实验性

发生 QUIC 应用程序错误。

ERR_QUIC_CONNECTION_FAILED

添加于: v23.0.0

[稳定度: 1 - 实验性]

稳定度: 1 稳定度: 1 - 实验性

建立 QUIC 连接失败。

ERR_QUIC_ENDPOINT_CLOSED

添加于: v23.0.0

[稳定度: 1 - 实验性]

稳定度: 1 稳定度: 1 - 实验性

QUIC 端点因错误而关闭。

ERR_QUIC_OPEN_STREAM_FAILED

添加于: v23.0.0

[稳定度: 1 - 实验性]

稳定度: 1 稳定度: 1 - 实验性

打开 QUIC 流失败。

ERR_QUIC_TRANSPORT_ERROR

添加于: v23.4.0

[稳定度: 1 - 实验性]

稳定度: 1 稳定度: 1 - 实验性

发生 QUIC 传输错误。

ERR_QUIC_VERSION_NEGOTIATION_ERROR

添加于: v23.4.0

[稳定度: 1 - 实验性]

稳定度: 1 稳定度: 1 - 实验性

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

ERR_REQUIRE_ASYNC_MODULE

[Stable: 1 - Experimental]

Stable: 1 稳定性: 1 - 实验性

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

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

ERR_REQUIRE_CYCLE_MODULE

[Stable: 1 - Experimental]

Stable: 1 稳定性: 1 - 实验性

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

为了避免循环,循环中涉及的 require() 调用不应该发生在 ES 模块(通过 createRequire())或 CommonJS 模块的顶层,并且应该在内部函数中延迟完成。

ERR_REQUIRE_ESM

[历史]

版本变更
v23.0.0require() 现在默认支持加载同步 ES 模块。

[Stable: 0 - Deprecated]

Stable: 0 稳定性: 0 - 已弃用

试图 require() 一个 ES 模块

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

ERR_SCRIPT_EXECUTION_INTERRUPTED

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

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

添加于: v21.7.0, v20.12.0

传递给单可执行文件应用程序 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_SQLITE_ERROR

添加于: v22.5.0

SQLite 返回了一个错误。

ERR_SRI_PARSE

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

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,则阻止中止。

js
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

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

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

新增于: v13.3.0

上下文必须是 SecureContext

ERR_TLS_INVALID_PROTOCOL_METHOD

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

ERR_TLS_INVALID_PROTOCOL_VERSION

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

ERR_TLS_INVALID_STATE

新增于: v13.10.0, v12.17.0

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 服务器端套接字发出服务器名称指示,这仅对客户端有效。

ERR_TRACE_EVENTS_CATEGORY_REQUIRED

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

ERR_TRACE_EVENTS_UNAVAILABLE

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

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

[稳定度: 1 - 实验性]

稳定度: 1 稳定度: 1 - 实验性

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

ERR_UNKNOWN_MODULE_FORMAT

[稳定度: 1 - 实验性]

稳定度: 1 稳定度: 1 - 实验性

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

ERR_UNKNOWN_SIGNAL

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

ERR_UNSUPPORTED_DIR_IMPORT

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

js
import './'; // 不支持
import './index.js'; // 支持
import 'package-name'; // 支持

ERR_UNSUPPORTED_ESM_URL_SCHEME

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

ERR_UNSUPPORTED_NODE_MODULES_TYPE_STRIPPING

添加于: v22.6.0

不支持从属于 node_modules 目录的文件进行类型剥离。

ERR_UNSUPPORTED_RESOLVE_REQUEST

尝试解析无效的模块引用者。 当导入或使用以下任一项调用 import.meta.resolve() 时,可能会发生这种情况:

  • 来自 URL 方案不是 file 的模块的,不是内置模块的裸标识符。
  • 来自 URL 方案不是特殊方案的模块的相对 URL
js
try {
  // 尝试从 `data:` URL 模块导入包 'bare-specifier':
  await import('data:text/javascript,import "bare-specifier"');
} catch (e) {
  console.log(e.code); // ERR_UNSUPPORTED_RESOLVE_REQUEST
}

ERR_USE_AFTER_CLOSE

[稳定度: 1 - 实验性]

稳定度: 1 稳定度: 1 - 实验性

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

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_NOT_MODULE

链接 Promise 的 fulfilled 值不是 vm.Module 对象。

ERR_VM_MODULE_STATUS

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

ERR_WASI_ALREADY_STARTED

WASI 实例已启动。

ERR_WASI_NOT_STARTED

WASI 实例尚未启动。

ERR_WEBASSEMBLY_RESPONSE

新增于: v18.1.0

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

ERR_WORKER_INIT_FAILED

Worker 初始化失败。

ERR_WORKER_INVALID_EXEC_ARGV

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

ERR_WORKER_MESSAGING_ERRORED

新增于: v22.5.0

[稳定性: 1 - 实验性]

稳定性: 1 稳定性: 1.1 - 积极开发

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

ERR_WORKER_MESSAGING_FAILED

Added in: v22.5.0

[Stable: 1 - Experimental]

Stable: 1 Stability: 1.1 - 积极开发中

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

ERR_WORKER_MESSAGING_SAME_THREAD

Added in: v22.5.0

[Stable: 1 - Experimental]

Stable: 1 Stability: 1.1 - 积极开发中

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

ERR_WORKER_MESSAGING_TIMEOUT

Added in: v22.5.0

[Stable: 1 - Experimental]

Stable: 1 Stability: 1.1 - 积极开发中

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

ERR_WORKER_NOT_RUNNING

由于 Worker 实例当前未运行,操作失败。

ERR_WORKER_OUT_OF_MEMORY

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

ERR_WORKER_PATH

worker 的主脚本的路径既不是绝对路径,也不是以 ./../ 开头的相对路径。

ERR_WORKER_UNSERIALIZABLE_ERROR

从 worker 线程序列化未捕获异常的所有尝试均失败。

ERR_WORKER_UNSUPPORTED_OPERATION

worker 线程不支持所请求的功能。

ERR_ZLIB_INITIALIZATION_FAILED

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

HPE_CHUNK_EXTENSIONS_OVERFLOW

Added in: v21.6.2, v20.11.1, v18.19.1

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

HPE_HEADER_OVERFLOW

[历史]

版本变更
v11.4.0, v10.15.0http_parser 中的最大头部大小设置为 8 KiB。

收到了过多的 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

[历史]

版本变更
v12.0.0添加了 requireStack 属性。

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

遗留 Node.js 错误码

[稳定度: 0 - 已弃用]

稳定度: 0 稳定度: 0 - 已弃用。 这些错误码要么是不一致的,要么已被移除。

ERR_CANNOT_TRANSFER_OBJECT

添加于: v10.5.0

移除于: v12.5.0

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

ERR_CPU_USAGE

移除于: v15.0.0

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

ERR_CRYPTO_HASH_DIGEST_NO_UTF16

添加于: v9.0.0

移除于: v12.12.0

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

ERR_CRYPTO_SCRYPT_INVALID_PARAMETER

已移除:v23.0.0

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

已移除:v23.0.0

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

ERR_HTTP2_FRAME_ERROR

已添加:v9.0.0

已移除:v10.0.0

当在 HTTP/2 会话上发送单个帧时发生故障时使用。

ERR_HTTP2_HEADERS_OBJECT

已添加:v9.0.0

已移除:v10.0.0

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

ERR_HTTP2_HEADER_REQUIRED

已添加:v9.0.0

已移除:v10.0.0

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

ERR_HTTP2_INFO_HEADERS_AFTER_RESPOND

已添加:v9.0.0

已移除:v10.0.0

HTTP/2 信息性标头必须仅在调用 Http2Stream.prototype.respond() 方法之前发送。

ERR_HTTP2_STREAM_CLOSED

已添加:v9.0.0

已移除:v10.0.0

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

ERR_HTTP_INVALID_CHAR

已添加:v9.0.0

已移除:v10.0.0

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

ERR_IMPORT_ASSERTION_TYPE_FAILED

已添加:v17.1.0, v16.14.0

已移除:v21.1.0

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

ERR_IMPORT_ASSERTION_TYPE_MISSING

已添加:v17.1.0, v16.14.0

已移除:v21.1.0

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

ERR_IMPORT_ASSERTION_TYPE_UNSUPPORTED

加入于: v17.1.0, v16.14.0

移除于: v21.1.0

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

ERR_INDEX_OUT_OF_RANGE

加入于: v10.0.0

移除于: v11.0.0

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

ERR_INVALID_OPT_VALUE

加入于: v8.0.0

移除于: v15.0.0

在 options 对象中传递了无效或意外的值。

ERR_INVALID_OPT_VALUE_ENCODING

加入于: v9.0.0

移除于: v15.0.0

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

ERR_INVALID_PERFORMANCE_MARK

加入于: v8.5.0

移除于: v16.7.0

使用 Performance Timing API (perf_hooks) 时,性能标记无效。

ERR_INVALID_TRANSFER_OBJECT

[历史]

版本变更
v21.0.0抛出 DOMException 代替。
v21.0.0移除于: v21.0.0

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

ERR_MANIFEST_ASSERT_INTEGRITY

移除于: v22.2.0

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

ERR_MANIFEST_DEPENDENCY_MISSING

移除于: v22.2.0

尝试加载资源,但该资源未被列为尝试加载它的位置的依赖项。 有关更多信息,请参见策略清单的文档。

ERR_MANIFEST_INTEGRITY_MISMATCH

移除于: v22.2.0

尝试加载策略清单,但该清单对于不匹配的资源具有多个条目。 更新清单条目以匹配,从而解决此错误。 有关更多信息,请参见策略清单的文档。

ERR_MANIFEST_INVALID_RESOURCE_FIELD

移除于: v22.2.0

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

ERR_MANIFEST_INVALID_SPECIFIER

已移除:v22.2.0

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

ERR_MANIFEST_PARSE_POLICY

已移除:v22.2.0

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

ERR_MANIFEST_TDZ

已移除:v22.2.0

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

ERR_MANIFEST_UNKNOWN_ONERROR

已移除:v22.2.0

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

ERR_MISSING_MESSAGE_PORT_IN_TRANSFER_LIST

已移除:v15.0.0

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

ERR_MISSING_TRANSFERABLE_IN_TRANSFER_LIST

[历史]

版本变更
v21.0.0抛出一个 DOMException 代替。
v21.0.0已移除:v21.0.0
v15.0.0添加于:v15.0.0

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

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

ERR_NAPI_CONS_PROTOTYPE_OBJECT

添加于:v9.0.0

已移除:v10.0.0

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

ERR_NAPI_TSFN_START_IDLE_LOOP

添加于: v10.6.0, v8.16.0

移除于: v14.2.0, v12.17.0

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

ERR_NAPI_TSFN_STOP_IDLE_LOOP

添加于: v10.6.0, v8.16.0

移除于: v14.2.0, v12.17.0

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

ERR_NO_LONGER_SUPPORTED

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

ERR_OUTOFMEMORY

添加于: v9.0.0

移除于: v10.0.0

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

ERR_PARSE_HISTORY_DATA

添加于: v9.0.0

移除于: v10.0.0

node:repl 模块无法解析来自 REPL 历史记录文件的数据。

ERR_SOCKET_CANNOT_SEND

添加于: v9.0.0

移除于: v14.0.0

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

ERR_STDERR_CLOSE

[历史记录]

版本变更
v10.12.0process.stderr.end() 现在仅关闭流的一侧,而不关闭底层资源,从而使此错误过时,而不是发出错误。
v10.12.0移除于: v10.12.0

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

ERR_STDOUT_CLOSE

[历史记录]

版本变更
v10.12.0process.stderr.end() 现在仅关闭流的一侧,而不关闭底层资源,从而使此错误过时,而不是发出错误。
v10.12.0移除于: v10.12.0

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

ERR_STREAM_READ_NOT_IMPLEMENTED

添加于: v9.0.0

移除于: v10.0.0

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

ERR_TLS_RENEGOTIATION_FAILED

Added in: v9.0.0

Removed in: v10.0.0

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

ERR_TRANSFERRING_EXTERNALIZED_SHAREDARRAYBUFFER

Added in: v10.5.0

Removed in: v14.0.0

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

这只会发生在原生插件以“外部化”模式创建 SharedArrayBuffer,或将现有的 SharedArrayBuffer 放入外部化模式时。

ERR_UNKNOWN_STDIN_TYPE

Added in: v8.0.0

Removed in: v11.7.0

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

ERR_UNKNOWN_STREAM_TYPE

Added in: v8.0.0

Removed in: v11.7.0

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

ERR_V8BREAKITERATOR

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

ERR_VALUE_OUT_OF_RANGE

Added in: v9.0.0

Removed in: v10.0.0

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

ERR_VM_MODULE_LINKING_ERRORED

Added in: v10.0.0

Removed in: v18.1.0, v16.17.0

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

ERR_VM_MODULE_NOT_LINKED

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

ERR_WORKER_UNSUPPORTED_EXTENSION

Added in: v11.0.0

Removed in: v16.9.0

用于 Worker 主脚本的路径名具有未知的文件扩展名。

ERR_ZLIB_BINDING_CLOSED

Added in: v9.0.0

Removed in: v10.0.0

当尝试在使用 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

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