错误
在 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
结构 来处理这些异常。
// 由于 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
模块。
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
<Object>constructorOpt
<Function>
在 targetObject
上创建一个 .stack
属性,访问该属性时返回一个字符串,表示在代码中调用 Error.captureStackTrace()
的位置。
const myObject = {}
Error.captureStackTrace(myObject)
myObject.stack // 与 `new Error().stack` 类似
跟踪的第一行将以 ${myObject.name}: ${myObject.message}
为前缀。
可选的 constructorOpt
参数接受一个函数。如果给出,则生成的堆栈跟踪中将省略 constructorOpt
以上的所有帧,包括 constructorOpt
本身。
constructorOpt
参数用于向用户隐藏错误生成的实现细节。例如:
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
(如果已设置)。
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
时)。
const err = new Error('The message')
console.error(err.message)
// 打印:The message
error.stack
error.stack
属性是一个字符串,描述了 Error
对象实例化时代码中的位置。
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
调用的帧将不会出现在堆栈跟踪中:
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
- 继承自: <errors.Error>
指示断言失败。详情请参见 类: assert.AssertionError
。
类: RangeError
- 继承自: <errors.Error>
指示提供的参数不在函数可接受值的集合或范围内;无论是数值范围,还是给定函数参数选项集之外的值。
require('node:net').connect(-1)
// 抛出 "RangeError: "port" option should be >= 0 and < 65536: -1"
Node.js 将立即生成并抛出 RangeError
实例,作为一种参数验证形式。
类: ReferenceError
- 继承自: <errors.Error>
指示正在尝试访问未定义的变量。此类错误通常表示代码中的拼写错误或程序损坏。
虽然客户端代码可能会生成和传播这些错误,但在实践中,只有 V8 会这样做。
doesNotExist
// 抛出 ReferenceError,doesNotExist 在此程序中不是变量。
除非应用程序动态生成和运行代码,否则 ReferenceError
实例表示代码或其依赖项中的错误。
类: SyntaxError
- 继承: <errors.Error>
指示程序不是有效的 JavaScript。这些错误可能仅由代码评估生成和传播。代码评估可能是 eval
、Function
、require
或 vm 的结果。这些错误几乎总是表明程序已损坏。
try {
require('node:vm').runInThisContext('binary ! isNotOk')
} catch (err) {
// 'err' 将是 SyntaxError。
}
SyntaxError
实例在其创建的上下文中是不可恢复的——它们只能被其他上下文捕获。
类: SystemError
- 继承: <errors.Error>
当 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
(连接被对等方重置): 连接被对等方强制关闭。这通常是由于远程套接字上的连接超时或重新引导而导致的连接丢失。通常通过http
和net
模块遇到。EEXIST
(文件已存在): 现有文件是需要目标不存在的操作的目标。EISDIR
(是目录): 操作需要一个文件,但给定的路径名是一个目录。EMFILE
(系统中打开的文件过多): 系统允许的最大 文件描述符 数已达到,在至少关闭一个文件描述符之前,无法满足另一个描述符的请求。当同时并行打开许多文件时,尤其是在文件描述符限制较低的系统(特别是 macOS)上会遇到这种情况。要解决限制过低的问题,请在将运行 Node.js 进程的同一 shell 中运行ulimit -n 2048
。ENOENT
(没有此类文件或目录):fs
操作通常会引发此错误,以指示指定路径名的组件不存在。找不到给定路径的任何实体(文件或目录)。ENOTDIR
(不是目录): 给定路径名的组件存在,但并非预期的目录。通常由fs.readdir
引发。ENOTEMPTY
(目录不为空): 带有条目的目录是需要空目录的操作的目标,通常是fs.unlink
。ENOTFOUND
(DNS 查找失败): 指示 DNS 失败EAI_NODATA
或EAI_NONAME
。这不是标准的 POSIX 错误。EPERM
(操作不被允许): 尝试执行需要提升权限的操作。EPIPE
(管道损坏): 对管道、套接字或 FIFO 的写入,没有进程读取数据。通常在net
和http
层遇到,表示正在写入的流的远程端已关闭。ETIMEDOUT
(操作超时): 连接或发送请求失败,因为连接方在一段时间后没有正确响应。通常由http
或net
遇到。通常表示socket.end()
未正确调用。
类: TypeError
- 继承自 <errors.Error>
指示提供的参数不是允许的类型。例如,将一个函数传递给期望字符串的参数将是一个 TypeError
。
require('node:url').parse(() => {})
// 抛出 TypeError,因为它期望一个字符串。
Node.js 将立即生成并抛出 TypeError
实例作为参数验证的一种形式。
异常与错误
JavaScript 异常是一个由于无效操作或作为 throw
语句的目标而抛出的值。虽然这些值不需要是 Error
的实例或继承自 Error
的类,但 Node.js 或 JavaScript 运行时抛出的所有异常都将是 Error
的实例。
某些异常在 JavaScript 层面是不可恢复的。此类异常将始终导致 Node.js 进程崩溃。例如,C++ 层中的 assert()
检查或 abort()
调用。
OpenSSL 错误
源自 crypto
或 tls
的错误属于 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
流,或者 Console
的 stdout
或 stderr
流不可写。
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 引擎(例如,通过 clientCertEngine
或 privateKeyEngine
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()
被调用时,Buffer
、TypedArray
或 DataView
参数的长度不同。
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()
复制已存在的文件,并且 force
和 errorOnExist
都设置为 true
。
ERR_FS_CP_EINVAL
新增于:v16.7.0
使用 fs.cp()
时,src
或 dest
指向无效路径。
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()
复制到套接字。
ERR_FS_CP_SYMLINK_TO_SUBDIRECTORY
新增于: 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 信息状态码。信息状态码必须是 100
到 199
(包含)之间的整数。
ERR_HTTP2_INVALID_ORIGIN
HTTP/2 ORIGIN
帧要求有效的来源。
ERR_HTTP2_INVALID_PACKED_SETTINGS_LENGTH
传递给 http2.getUnpackedSettings()
API 的输入 Buffer
和 Uint8Array
实例的长度必须是 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 发送非普通文件,但提供了 offset
或 length
选项。
ERR_HTTP2_SESSION_ERROR
Http2Session
以非零错误代码关闭。
ERR_HTTP2_SETTINGS_CANCEL
Http2Session
设置已取消。
ERR_HTTP2_SOCKET_BOUND
尝试将 Http2Session
对象连接到已绑定到另一个 Http2Session
对象的 net.Socket
或 tls.TLSSocket
。
ERR_HTTP2_SOCKET_UNBOUND
尝试使用已关闭的 Http2Session
的 socket
属性。
ERR_HTTP2_STATUS_101
HTTP/2 禁止使用 101
信息状态码。
ERR_HTTP2_STATUS_INVALID
指定了无效的 HTTP 状态码。状态码必须是 100
到 599
(包含)之间的整数。
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
使用了 --input-type
标志试图执行文件。此标志只能与通过 --eval
、--print
或 STDIN
的输入一起使用。
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
传递了无效的 asyncId
或 triggerAsyncId
。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
配置中同时设置了 breakEvalOnSigint
和 eval
选项,这是不支持的。
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
将Buffer
、TypedArray
、DataView
或string
作为标准输入提供给异步 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')
// 抛出代码为 '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 传递给了 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
尝试使用同步分叉的 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.getPrototypeOf
和 Object.setPrototypeOf
来获取和设置对象的原型。
ERR_QUIC_APPLICATION_ERROR
新增于: v23.4.0
发生了 QUIC 应用错误。
ERR_QUIC_CONNECTION_FAILED
新增于: v23.0.0
建立 QUIC 连接失败。
ERR_QUIC_ENDPOINT_CLOSED
新增于: v23.0.0
QUIC 端点已错误关闭。
ERR_QUIC_OPEN_STREAM_FAILED
新增于: v23.0.0
打开 QUIC 流失败。
ERR_QUIC_TRANSPORT_ERROR
新增于:v23.4.0
发生了 QUIC 传输错误。
ERR_QUIC_VERSION_NEGOTIATION_ERROR
新增于:v23.4.0
由于需要版本协商,QUIC 会话失败。
ERR_REQUIRE_ASYNC_MODULE
尝试 require()
一个 ES 模块 时,该模块竟然是异步的。也就是说,它包含顶级 await。
要查看顶级 await 的位置,请使用 --experimental-print-required-tla
(这会在查找顶级 await 之前执行模块)。
ERR_REQUIRE_CYCLE_MODULE
尝试 require()
一个 ES 模块 时,CommonJS 到 ESM 或 ESM 到 CommonJS 的边缘参与了一个直接循环。这是不允许的,因为 ES 模块在自身正在被评估时无法被评估。
为了避免循环,参与循环的 require()
调用不应该发生在 ES 模块(通过 createRequire()
)或 CommonJS 模块的顶层,而应该在内部函数中延迟执行。
ERR_REQUIRE_ESM
[历史]
版本 | 变更 |
---|---|
v23.0.0 | require() 现在默认支持加载同步 ES 模块。 |
尝试 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()
中,recvBufferSize
或 sendBufferSize
选项传递了一个无效的(负数)大小。
ERR_SOCKET_BAD_PORT
某个 API 函数期望一个端口号 >= 0 且 < 65536,但收到了一个无效的值。
ERR_SOCKET_BAD_TYPE
某个 API 函数期望一个套接字类型(udp4
或 udp6
),但收到了一个无效的值。
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
时发生中止。
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 选项同时包含 ALPNProtocols
和 ALPNCallback
,则在创建 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 协议 minVersion
或 maxVersion
与尝试显式设置 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
尝试加载一个具有未知或不受支持的文件扩展名的模块。
ERR_UNKNOWN_MODULE_FORMAT
尝试加载一个具有未知或不受支持的格式的模块。
ERR_UNKNOWN_SIGNAL
向期望有效信号的 API(例如 subprocess.kill()
)传递了无效或未知的进程信号。
ERR_UNSUPPORTED_DIR_IMPORT
不支持导入目录 URL。请改用 使用包名自引用包 并 在 package.json
文件的 "exports"
字段中定义自定义子路径](/zh/api/packages#subpath-exports)。
import './' // 不支持
import './index.js' // 支持
import 'package-name' // 支持
ERR_UNSUPPORTED_ESM_URL_SCHEME
不支持使用除 file
和 data
之外的 URL 方案进行 import
。
ERR_UNSUPPORTED_NODE_MODULES_TYPE_STRIPPING
新增于:v22.6.0
不支持对 node_modules
目录下的文件进行类型去除。
ERR_UNSUPPORTED_RESOLVE_REQUEST
尝试解析无效的模块引用程序。当使用以下任一方法导入或调用 import.meta.resolve()
时,可能会发生这种情况:
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
尝试使用已关闭的内容。
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
新增于:v18.1.0
已传递给 WebAssembly.compileStreaming
或 WebAssembly.instantiateStreaming
的 Response
不是有效的 WebAssembly 响应。
ERR_WORKER_INIT_FAILED
Worker
初始化失败。
ERR_WORKER_INVALID_EXEC_ARGV
传递给 Worker
构造函数的 execArgv
选项包含无效标志。
ERR_WORKER_MESSAGING_ERRORED
新增于:v22.5.0
目标线程在处理通过 postMessageToThread()
发送的消息时抛出错误。
ERR_WORKER_MESSAGING_FAILED
新增于:v22.5.0
在 postMessageToThread()
中请求的线程无效或没有 workerMessage
监听器。
ERR_WORKER_MESSAGING_SAME_THREAD
新增于:v22.5.0
在 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.0 | http_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-Length
或 Transfer-Encoding: chunked
。
MODULE_NOT_FOUND
[历史]
版本 | 变更 |
---|---|
v12.0.0 | 添加了 requireStack 属性。 |
在尝试进行 require()
操作或加载程序入口点时,CommonJS 模块加载器无法解析模块文件。
旧版 Node.js 错误代码
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 编码(例如 ucs
或 utf16le
)。
ERR_CRYPTO_SCRYPT_INVALID_PARAMETER
已移除于: v23.0.0
向 crypto.scrypt()
或 crypto.scryptSync()
传递了不兼容的选项组合。新版本的 Node.js 使用错误代码 ERR_INCOMPATIBLE_OPTION_PAIR
来代替,这与其他 API 保持一致。
ERR_FS_INVALID_SYMLINK_TYPE
已移除于: 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.0 | process.stderr.end() 现在不再发出错误,而是只关闭流端,而不关闭底层资源,这使得此错误已过时。 |
v10.12.0 | 移除于: v10.12.0 |
尝试关闭 process.stderr
流。根据设计,Node.js 不允许用户代码关闭 stdout
或 stderr
流。
ERR_STDOUT_CLOSE
[历史]
版本 | 变更 |
---|---|
v10.12.0 | process.stderr.end() 现在不再发出错误,而是只关闭流端,而不关闭底层资源,这使得此错误已过时。 |
v10.12.0 | 移除于: v10.12.0 |
尝试关闭 process.stdout
流。根据设计,Node.js 不允许用户代码关闭 stdout
或 stderr
流。
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
尝试使用未知的 stdout
或 stderr
文件类型启动 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
尝试分配内存时发生错误。这种情况不应该发生。