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
// 由于 z 未定义,抛出 ReferenceError。
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 进行处理。此类方法没有完整的列表;请参考每个方法的文档以确定所需合适的错误处理机制。

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

对于所有 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 类的实例,或者继承自 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 对象时,util.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)
// 打印:
//   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)
// 打印:The message

error.stack

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

bash
Error: 事情不断发生!
   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()` *同步*调用 speedy。
  cheetahify(function speedy() {
    throw new Error('oh no!')
  })
}

makeFaster()
// 将抛出:
//   /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 属性是一个描述失败的系统调用 的字符串。

常用系统错误

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

  • EACCES (权限被拒绝): 尝试以文件访问权限禁止的方式访问文件。
  • EADDRINUSE (地址已在使用): 由于本地系统上的另一个服务器已占用该地址,尝试将服务器 (net, http, 或 https) 绑定到本地地址失败。
  • ECONNREFUSED (连接被拒绝): 无法建立连接,因为目标计算机主动拒绝了它。这通常是由于尝试连接到远程主机上处于非活动状态的服务而导致的。
  • ECONNRESET (连接被对等方重置): 连接被对等方强制关闭。这通常是由于远程套接字上的连接超时或重新引导而导致的连接丢失。通常通过 httpnet 模块遇到。
  • EEXIST (文件已存在): 现有文件是需要目标不存在的操作的目标。
  • EISDIR (是目录): 操作需要一个文件,但给定的路径名是一个目录。
  • EMFILE (系统中打开的文件过多): 系统允许的最大 文件描述符 数已达到,在至少关闭一个文件描述符之前,无法满足另一个描述符的请求。当同时并行打开许多文件时,尤其是在文件描述符限制较低的系统(特别是 macOS)上会遇到这种情况。要解决限制过低的问题,请在将运行 Node.js 进程的同一 shell 中运行 ulimit -n 2048
  • ENOENT (没有此类文件或目录): fs 操作通常会引发此错误,以指示指定路径名的组件不存在。找不到给定路径的任何实体(文件或目录)。
  • ENOTDIR (不是目录): 给定路径名的组件存在,但并非预期的目录。通常由 fs.readdir 引发。
  • ENOTEMPTY (目录不为空): 带有条目的目录是需要空目录的操作的目标,通常是 fs.unlink
  • ENOTFOUND (DNS 查找失败): 指示 DNS 失败 EAI_NODATAEAI_NONAME。这不是标准的 POSIX 错误。
  • EPERM (操作不被允许): 尝试执行需要提升权限的操作。
  • EPIPE (管道损坏): 对管道、套接字或 FIFO 的写入,没有进程读取数据。通常在 nethttp 层遇到,表示正在写入的流的远程端已关闭。
  • ETIMEDOUT (操作超时): 连接或发送请求失败,因为连接方在一段时间后没有正确响应。通常由 httpnet 遇到。通常表示 socket.end() 未正确调用。

类: TypeError

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

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

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

新增于: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 引发的错误消息匹配时,此错误由 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 实例不关联的 JS 引擎上下文环境中,尝试从附加组件或嵌入器代码创建 Node.js Buffer 实例。传递给 Buffer 方法的数据将在方法返回时被释放。

遇到此错误时,创建 Buffer 实例的另一种可能方法是创建一个普通的 Uint8Array,它只在结果对象的原型上有所不同。Uint8Array 通常在所有接受 Buffer 的 Node.js 核心 API 中都被接受;它们在所有上下文环境中都可用。

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 流,或者 Consolestdoutstderr 流不可写。

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

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

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

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

由于之前已加载 node:domain 模块,因此无法调用 process.setUncaughtExceptionCaptureCallback()

堆栈跟踪已扩展,包含加载 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() 复制到套接字。

新增于: v16.7.0

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

ERR_FS_CP_UNKNOWN

新增于: v16.7.0

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

ERR_FS_EISDIR

路径是一个目录。

ERR_FS_FILE_TOO_LARGE

尝试读取的文件大小超过了 Buffer 的最大允许大小。

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

新增于:v15.14.0

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

ERR_HTTP2_TRAILERS_ALREADY_SENT

尾部报头已发送到 Http2Stream

ERR_HTTP2_TRAILERS_NOT_READY

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

ERR_HTTP2_UNSUPPORTED_PROTOCOL

http2.connect() 传递的 URL 使用的协议不是 http:https:

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

新增于:v21.1.0

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

ERR_IMPORT_ATTRIBUTE_TYPE_INCOMPATIBLE

新增于:v21.1.0

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

ERR_IMPORT_ATTRIBUTE_UNSUPPORTED

新增于:v21.0.0, v20.10.0, v18.19.0

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

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 中存在 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。id 小于 -1 的情况不应该发生。

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 模块中的某些函数)遇到主机不兼容的文件 URL。这种情况仅在类 Unix 系统上出现,其中仅支持 localhost 或空主机。

ERR_INVALID_FILE_URL_PATH

使用 file: URL 的 Node.js API(例如 fs 模块中的某些函数)遇到路径不兼容的文件 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

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

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作为标准输入提供给异步 fork。有关更多信息,请参阅child_process 模块的文档。

ERR_INVALID_THIS

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

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

const buf = Buffer.alloc(1)
urlSearchParams.has.call(buf, 'foo')
// 抛出代码为 'ERR_INVALID_THIS' 的 TypeError

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 传递给了 WHATWGURL 构造函数 或传统的 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

尝试使用同步分叉的 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 平台不支持创建 Worker。这是由于缺少对 Worker 的嵌入器支持造成的。特别是,标准版本的 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

[稳定性:1 - 实验性]

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

尝试 require() 一个 ES 模块 时,该模块竟然是异步的。也就是说,它包含顶级 await。

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

ERR_REQUIRE_CYCLE_MODULE

[稳定性: 1 - 实验性]

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

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

为了避免循环,参与循环的 require() 调用不应该发生在 ES 模块(通过 createRequire())或 CommonJS 模块的顶层,而应该在内部函数中延迟执行。

ERR_REQUIRE_ESM

[历史]

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

[稳定性: 0 - 已弃用]

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

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

ERR_SOCKET_BAD_TYPE

某个 API 函数期望一个套接字类型(udp4udp6),但收到了一个无效的值。

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

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

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

防止在套接字上设置字符串解码器或解码器处于 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

如果 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) 密钥协商协议提供的参数过小。默认情况下,即使强烈建议使用 2048 位或更大的密钥长度以获得更强的安全性,密钥长度也必须大于或等于 1024 位才能避免漏洞。

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

不支持导入目录 URL。请改用 使用包名自引用包package.json 文件的 "exports" 字段中定义自定义子路径](/zh/api/packages#subpath-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 的已完成值不是 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

新增于:v22.5.0

[稳定性:1 - 实验性]

稳定性:1 稳定性:1.1 - 活跃开发中

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

ERR_WORKER_MESSAGING_SAME_THREAD

新增于:v22.5.0

[稳定性:1 - 实验性]

稳定性:1 稳定性:1.1 - 活跃开发中

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

ERR_WORKER_MESSAGING_TIMEOUT

自版本 v22.5.0 起添加

[稳定性: 1 - 实验性]

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

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

ERR_WORKER_NOT_RUNNING

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

ERR_WORKER_OUT_OF_MEMORY

Worker 实例由于达到内存限制而终止。

ERR_WORKER_PATH

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

ERR_WORKER_UNSERIALIZABLE_ERROR

序列化来自工作线程的未捕获异常的所有尝试均失败。

ERR_WORKER_UNSUPPORTED_OPERATION

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

ERR_ZLIB_INITIALIZATION_FAILED

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

HPE_CHUNK_EXTENSIONS_OVERFLOW

新增于: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

hash.digest() 使用了 UTF-16 编码。虽然 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

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

ERR_INVALID_OPT_VALUE_ENCODING

新增于: v9.0.0

移除于: v15.0.0

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

ERR_INVALID_PERFORMANCE_MARK

新增于: v8.5.0

移除于: v16.7.0

使用性能计时 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 的一个 bug。

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

新增于: v9.0.0

移除于: v10.0.0

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

ERR_TRANSFERRING_EXTERNALIZED_SHAREDARRAYBUFFER

新增于: v10.5.0

移除于: v14.0.0

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

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

ERR_UNKNOWN_STDIN_TYPE

新增于: v8.0.0

移除于: v11.7.0

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

ERR_UNKNOWN_STREAM_TYPE

新增于: v8.0.0

移除于: v11.7.0

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

ERR_V8BREAKITERATOR

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

ERR_VALUE_OUT_OF_RANGE

新增于:v9.0.0

移除于:v10.0.0

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

ERR_VM_MODULE_LINKING_ERRORED

新增于:v10.0.0

移除于:v18.1.0, v16.17.0

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

ERR_VM_MODULE_NOT_LINKED

模块必须成功链接才能实例化。

ERR_WORKER_UNSUPPORTED_EXTENSION

新增于:v11.0.0

移除于:v16.9.0

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

ERR_ZLIB_BINDING_CLOSED

新增于:v9.0.0

移除于: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

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