Errors# (错误#)

Applications running in Node.js will generally experience the following categories of errors (在 Node.js 中运行的应用程序通常会遇到以下几类错误)

  • Standard JavaScript errors such as <EvalError>, <SyntaxError>, <RangeError>, <ReferenceError>, <TypeError>, and <URIError>. (标准的 JavaScript 错误,例如 <EvalError><SyntaxError><RangeError><ReferenceError><TypeError><URIError>。)
  • Standard DOMExceptions. (标准的 DOMException。)
  • System errors triggered by underlying operating system constraints such as attempting to open a file that does not exist or attempting to send data over a closed socket. (由底层操作系统约束触发的系统错误,例如尝试打开不存在的文件或尝试通过关闭的套接字发送数据。)
  • AssertionErrors are a special class of error that can be triggered when Node.js detects an exceptional logic violation that should never occur. These are raised typically by the node:assert module. (AssertionError 是一种特殊的错误类,当 Node.js 检测到不应该发生的异常逻辑违规时,可以触发该错误。这些通常由 node:assert 模块引发。)
  • User-specified errors triggered by application code. (由应用程序代码触发的,用户指定的错误。)

All JavaScript and system errors raised by Node.js inherit from, or are instances of, the standard JavaScript <Error> class and are guaranteed to provide at least the properties available on that class. (Node.js 引发的所有 JavaScript 和系统错误都继承自或属于标准 JavaScript <Error> 类,并且保证提供至少该类可用的属性。)

The error.message property of errors raised by Node.js may be changed in any versions. Use error.code to identify an error instead. For a DOMException, use domException.name to identify its type. (Node.js 引发的错误的 error.message 属性可能在任何版本中更改。请改用 error.code 来识别错误。对于 DOMException,请使用 domException.name 来识别其类型。)

Error propagation and interception# (错误传播和拦截#)

Node.js supports several mechanisms for propagating and handling errors that occur while an application is running. How these errors are reported and handled depends entirely on the type of Error and the style of the API that is called. (Node.js 支持多种机制来传播和处理应用程序运行时发生的错误。这些错误如何报告和处理完全取决于 Error 的类型和调用的 API 的风格。)

All JavaScript errors are handled as exceptions that immediately generate and throw an error using the standard JavaScript throw mechanism. These are handled using the try…catch construct provided by the JavaScript language. (所有 JavaScript 错误都作为异常处理,这些异常使用标准的 JavaScript throw 机制立即生成并抛出错误。这些错误使用 JavaScript 语言提供的 try…catch 构造来处理。)

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

Any use of the JavaScript throw mechanism will raise an exception that must be handled or the Node.js process will exit immediately. (任何使用 JavaScript throw 机制都会引发一个必须处理的异常,否则 Node.js 进程将立即退出。)

With few exceptions, Synchronous APIs (any blocking method that does not return a <Promise> nor accept a callback function, such as fs.readFileSync), will use throw to report errors. (除了少数例外,同步 API (任何不返回 <Promise> 也不接受 callback 函数的阻塞方法,例如 fs.readFileSync) 将使用 throw 来报告错误。)

Errors that occur within Asynchronous APIs may be reported in multiple ways (在异步 API 中发生的错误可以通过多种方式报告)

  • Some asynchronous methods returns a <Promise>, you should always take into account that it might be rejected. See --unhandled-rejections flag for how the process will react to an unhandled promise rejection. (一些异步方法返回 <Promise>,你应该始终考虑到它可能会被拒绝。有关进程将如何响应未处理的 Promise 拒绝,请参阅 --unhandled-rejections 标志。)

    const fs = require('node:fs/promises');
    
    (async () => {
      let data;
      try {
        data = await fs.readFile('a file that does not exist');
      } catch (err) {
        console.error('There was an error reading the file!', err);
        return;
      }
      // Otherwise handle the data
    })(); 
  • Most asynchronous methods that accept a callback function will accept an Error object passed as the first argument to that function. If that first argument is not null and is an instance of Error, then an error occurred that should be handled. (大多数接受 callback 函数的异步方法将接受作为该函数的第一个参数传递的 Error 对象。如果第一个参数不是 null 并且是 Error 的实例,则发生了应该处理的错误。)

    const fs = require('node:fs');
    fs.readFile('a file that does not exist', (err, data) => {
      if (err) {
        console.error('There was an error reading the file!', err);
        return;
      }
      // Otherwise handle the data
    }); 
  • When an asynchronous method is called on an object that is an EventEmitter, errors can be routed to that object's 'error' event. (当在作为 EventEmitter 的对象上调用异步方法时,错误可以路由到该对象的 'error' 事件。)

    const net = require('node:net');
    const connection = net.connect('localhost');
    
    // Adding an 'error' event handler to a stream:
    connection.on('error', (err) => {
      // If the connection is reset by the server, or if it can't
      // connect at all, or on any sort of error encountered by
      // the connection, the error will be sent here.
      console.error(err);
    });
    
    connection.pipe(process.stdout); 
  • A handful of typically asynchronous methods in the Node.js API may still use the throw mechanism to raise exceptions that must be handled using try…catch. There is no comprehensive list of such methods; please refer to the documentation of each method to determine the appropriate error handling mechanism required. (Node.js API 中的少数典型的异步方法可能仍然使用 throw 机制来引发必须使用 try…catch 处理的异常。没有此类方法的完整列表;请参阅每个方法的文档以确定所需的适当错误处理机制。)

The use of the 'error' event mechanism is most common for stream-based and event emitter-based APIs, which themselves represent a series of asynchronous operations over time (as opposed to a single operation that may pass or fail). ('error' 事件机制的使用对于 基于流的基于事件发射器的 API 最为常见,它们本身代表了一系列随时间推移的异步操作(而不是可能成功或失败的单个操作)。)

For all EventEmitter objects, if an 'error' event handler is not provided, the error will be thrown, causing the Node.js process to report an uncaught exception and crash unless either: a handler has been registered for the 'uncaughtException' event, or the deprecated node:domain module is used. (对于所有 EventEmitter 对象,如果没有提供 'error' 事件处理程序,则会抛出该错误,导致 Node.js 进程报告未捕获的异常并崩溃,除非:已为 'uncaughtException' 事件注册了处理程序,或者使用了已弃用的 node:domain 模块。)

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

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

Errors generated in this way cannot be intercepted using try…catch as they are thrown after the calling code has already exited. (以这种方式生成的错误无法使用 try…catch 拦截,因为它们是在调用代码已经退出之后抛出的。)

Developers must refer to the documentation for each method to determine exactly how errors raised by those methods are propagated. (开发人员必须参考每个方法的文档,以准确确定这些方法引发的错误是如何传播的。)

Class: Error# (类:Error#)

A generic JavaScript <Error> object that does not denote any specific circumstance of why the error occurred. Error objects capture a "stack trace" detailing the point in the code at which the Error was instantiated, and may provide a text description of the error. (一个通用的 JavaScript <Error> 对象,不表示错误发生的任何具体情况。Error 对象捕获一个“堆栈跟踪”,详细说明了在代码中实例化 Error 的位置,并且可以提供错误的文本描述。)

All errors generated by Node.js, including all system and JavaScript errors, will either be instances of, or inherit from, the Error class. (Node.js 生成的所有错误,包括所有系统和 JavaScript 错误,都将是 Error 类的实例或继承自 Error 类。)

new Error(message[, options])# (new Error(message[, options])#)

Creates a new Error object and sets the error.message property to the provided text message. If an object is passed as message, the text message is generated by calling String(message). If the cause option is provided, it is assigned to the error.cause property. The error.stack property will represent the point in the code at which new Error() was called. Stack traces are dependent on V8's stack trace API. Stack traces extend only to either (a) the beginning of synchronous code execution, or (b) the number of frames given by the property Error.stackTraceLimit, whichever is smaller. (创建一个新的 Error 对象并将 error.message 属性设置为提供的文本消息。如果将对象作为 message 传递,则通过调用 String(message) 生成文本消息。如果提供了 cause 选项,则将其分配给 error.cause 属性。error.stack 属性将表示在代码中调用 new Error() 的位置。堆栈跟踪依赖于 V8 的堆栈跟踪 API。堆栈跟踪仅扩展到 (a) 同步代码执行的开始处,或 (b) 属性 Error.stackTraceLimit 给出的帧数,以较小者为准。)

Error.captureStackTrace(targetObject[, constructorOpt])# (Error.captureStackTrace(targetObject[, constructorOpt])#)

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

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

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

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

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

function a() {
  b();
}

function b() {
  c();
}

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

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

a(); 

Error.stackTraceLimit#

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

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

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

error.cause#

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

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

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

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

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

error.code#

error.code 属性是一个字符串标签,用于标识错误的类型。 error.code 是标识错误的最稳定方法。 它只会更改 Node.js 的主要版本之间。 相比之下,error.message 字符串可能会在 Node.js 的任何版本之间更改。 有关特定代码的详细信息,请参阅 Node.js 错误代码

error.message#

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

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

error.stack#

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

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

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

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

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

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

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

位置信息将是以下之一

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

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

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

类: AssertionError#

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

类: RangeError#

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

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

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

类: ReferenceError#

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

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

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

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

类: SyntaxError#

表示程序不是有效的 JavaScript。 这些错误只能由于代码求值而生成和传播。 代码求值可能会因 evalFunctionrequirevm 而发生。 这些错误几乎总是表明程序已损坏。

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

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

类: SystemError#

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

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

error.address#

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

error.code#

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

error.dest#

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

error.errno#

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

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

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

error.info#

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

error.message#

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

error.path#

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

error.port#

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

error.syscall#

error.syscall 属性是一个字符串,描述了失败的 系统调用

常见系统错误#

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

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

  • EADDRINUSE (地址已被占用):试图将服务器(nethttphttps)绑定到本地地址失败,原因是本地系统上的另一个服务器已占用该地址。

  • ECONNREFUSED (连接被拒绝):由于目标机器主动拒绝连接,因此无法建立连接。 这通常是由于尝试连接到外地主机上未激活的服务造成的。

  • ECONNRESET (连接被对等方重置):连接被对等方强制关闭。 这通常是由于超时或重新启动导致远程套接字上的连接丢失。 常见于 httpnet 模块中。

  • EEXIST (文件已存在):现有文件是需要目标不存在的操作的目标。

  • EISDIR (是一个目录):某个操作需要一个文件,但给定的路径名是一个目录。

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

  • ENOENT (没有这样的文件或目录):通常由 fs 操作引发,以指示指定的路径名的组成部分不存在。 给定路径找不到任何实体(文件或目录)。

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

  • ENOTEMPTY (目录不为空):包含条目的目录是需要空目录的操作的目标,通常是 fs.unlink

  • ENOTFOUND (DNS 查找失败):表示 EAI_NODATAEAI_NONAME 的 DNS 故障。 这不是标准的 POSIX 错误。

  • EPERM (不允许操作):尝试执行需要提升的权限的操作。

  • EPIPE (管道损坏):在管道、套接字或 FIFO 上进行写入,但没有进程来读取数据。 常见于 nethttp 层,表明要写入的流的远程端已关闭。

  • ETIMEDOUT (操作超时):连接或发送请求失败,因为连接方在一段时间后未正确响应。 通常由 httpnet 遇到。 通常表明未正确调用 socket.end()

类: TypeError#

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

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

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

异常与错误#

JavaScript 异常是一个值,该值作为无效操作的结果或作为 throw 语句的目标抛出。 虽然不需要这些值是 Error 的实例或继承自 Error 的类,但 Node.js 或 JavaScript 运行时抛出的所有异常都将Error 的实例。

某些异常在 JavaScript 层是无法恢复的。 此类异常将始终导致 Node.js 进程崩溃。 示例包括 C++ 层中的 assert() 检查或 abort() 调用。

OpenSSL 错误#

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

error.opensslErrorStack#

一个错误数组,可以提供 OpenSSL 库中错误来源的上下文。

error.function#

错误来源的 OpenSSL 函数。

error.library#

错误来源的 OpenSSL 库。

error.reason#

一个人类可读的字符串,描述了错误的原因。

Node.js 错误代码#

ABORT_ERR#

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

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

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

ERR_ACCESS_DENIED#

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

ERR_AMBIGUOUS_ARGUMENT#

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

ERR_ARG_NOT_ITERABLE#

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

ERR_ASSERTION#

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

ERR_ASYNC_CALLBACK#

尝试将不是函数的对象注册为 AsyncHooks 回调。

ERR_ASYNC_TYPE#

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

ERR_BROTLI_COMPRESSION_FAILED#

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

ERR_BROTLI_INVALID_PARAM#

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

ERR_BUFFER_CONTEXT_NOT_AVAILABLE#

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

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

ERR_BUFFER_OUT_OF_BOUNDS#

尝试在 Buffer 的范围之外进行操作。

ERR_BUFFER_TOO_LARGE#

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

ERR_CANNOT_WATCH_SIGINT#

Node.js 无法监视 SIGINT 信号。

ERR_CHILD_CLOSED_BEFORE_REPLY#

子进程在父进程收到回复之前关闭。

ERR_CHILD_PROCESS_IPC_REQUIRED#

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

ERR_CHILD_PROCESS_STDIO_MAXBUFFER#

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

ERR_CLOSED_MESSAGE_PORT#

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

ERR_CONSOLE_WRITABLE_STREAM#

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

ERR_CONSTRUCT_CALL_INVALID#

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

ERR_CONSTRUCT_CALL_REQUIRED#

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

ERR_CONTEXT_NOT_INITIALIZED#

传递到 API 的 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#

加密子系统的初始化失败。

ERR_CRYPTO_INVALID_AUTH_TAG#

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

ERR_CRYPTO_INVALID_COUNTER#

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

ERR_CRYPTO_INVALID_CURVE#

提供了无效的椭圆曲线。

ERR_CRYPTO_INVALID_DIGEST#

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

ERR_CRYPTO_INVALID_IV#

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

ERR_CRYPTO_INVALID_JWK#

提供了无效的 JSON Web 密钥。

ERR_CRYPTO_INVALID_KEYLEN#

提供了无效的密钥长度。

ERR_CRYPTO_INVALID_KEYPAIR#

提供了无效的密钥对。

ERR_CRYPTO_INVALID_KEYTYPE#

提供了无效的密钥类型。

ERR_CRYPTO_INVALID_KEY_OBJECT_TYPE#

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

ERR_CRYPTO_INVALID_MESSAGELEN#

提供了无效的消息长度。

ERR_CRYPTO_INVALID_SCRYPT_PARAMS#

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

ERR_CRYPTO_INVALID_STATE#

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

ERR_CRYPTO_INVALID_TAG_LENGTH#

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

ERR_CRYPTO_JOB_INIT_FAILED#

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

ERR_CRYPTO_JWK_UNSUPPORTED_CURVE#

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

ERR_CRYPTO_JWK_UNSUPPORTED_KEY_TYPE#

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

ERR_CRYPTO_OPERATION_FAILED#

由于未明确说明的原因,加密操作失败。

ERR_CRYPTO_PBKDF2_ERROR#

由于未指定的原因,PBKDF2 算法失败。 OpenSSL 不提供更多详细信息,因此 Node.js 也不提供。

ERR_CRYPTO_SCRYPT_NOT_SUPPORTED#

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

ERR_CRYPTO_SIGN_KEY_REQUIRED#

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

ERR_CRYPTO_TIMING_SAFE_EQUAL_LENGTH#

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

ERR_CRYPTO_UNKNOWN_CIPHER#

指定了未知的密码。

ERR_CRYPTO_UNKNOWN_DH_GROUP#

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

ERR_CRYPTO_UNSUPPORTED_OPERATION#

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

ERR_DEBUGGER_ERROR#

调试器发生错误。

ERR_DEBUGGER_STARTUP_ERROR#

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

ERR_DIR_CLOSED#

fs.Dir 先前已关闭。

ERR_DIR_CONCURRENT_OPERATION#

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

ERR_DLOPEN_DISABLED#

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

ERR_DLOPEN_FAILED#

process.dlopen() 的调用失败。

ERR_DNS_SET_SERVERS_FAILED#

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

ERR_DOMAIN_CALLBACK_NOT_AVAILABLE#

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

ERR_DOMAIN_CANNOT_SET_UNCAUGHT_EXCEPTION_CAPTURE#

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

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

ERR_DUPLICATE_STARTUP_SNAPSHOT_MAIN_FUNCTION#

无法调用 v8.startupSnapshot.setDeserializeMainFunction(),因为它之前已被调用。

ERR_ENCODING_INVALID_ENCODED_DATA#

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

ERR_ENCODING_NOT_SUPPORTED#

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

ERR_EVAL_ESM_CANNOT_PRINT#

--print 不能用于 ESM 输入。

ERR_EVENT_RECURSION#

当尝试在 EventTarget 上递归分发事件时抛出。

ERR_EXECUTION_ENVIRONMENT_NOT_AVAILABLE#

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

ERR_FALSY_VALUE_REJECTION#

通过 util.callbackify() 回调化的 Promise 被拒绝,并返回了一个假值。

ERR_FEATURE_UNAVAILABLE_ON_PLATFORM#

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

ERR_FS_CP_DIR_TO_NON_DIR#

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

ERR_FS_CP_EEXIST#

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

ERR_FS_CP_EINVAL#

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

ERR_FS_CP_FIFO_PIPE#

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

ERR_FS_CP_NON_DIR_TO_DIR#

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

ERR_FS_CP_SOCKET#

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

ERR_FS_CP_SYMLINK_TO_SUBDIRECTORY#

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

ERR_FS_CP_UNKNOWN#

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

ERR_FS_EISDIR#

路径是一个目录。

ERR_FS_FILE_TOO_LARGE#

已经尝试读取一个文件,该文件的大小大于 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/1 连接特定的标头禁止在 HTTP/2 请求和响应中使用。

ERR_HTTP2_INVALID_HEADER_VALUE#

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

ERR_HTTP2_INVALID_INFO_STATUS#

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

ERR_HTTP2_INVALID_ORIGIN#

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

ERR_HTTP2_INVALID_PACKED_SETTINGS_LENGTH#

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

ERR_HTTP2_INVALID_PSEUDOHEADER#

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

ERR_HTTP2_INVALID_SESSION#

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

ERR_HTTP2_INVALID_SETTING_VALUE#

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

ERR_HTTP2_INVALID_STREAM#

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

ERR_HTTP2_MAX_PENDING_SETTINGS_ACK#

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

ERR_HTTP2_NESTED_PUSH#

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

ERR_HTTP2_NO_MEM#

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

ERR_HTTP2_NO_SOCKET_MANIPULATION#

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

ERR_HTTP2_ORIGIN_LENGTH#

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

ERR_HTTP2_OUT_OF_STREAMS#

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

ERR_HTTP2_PAYLOAD_FORBIDDEN#

为 HTTP 响应代码指定了消息负载,但该响应代码禁止负载。

ERR_HTTP2_PING_CANCEL#

HTTP/2 ping 已被取消。

ERR_HTTP2_PING_LENGTH#

HTTP/2 ping 负载的长度必须正好为 8 字节。

ERR_HTTP2_PSEUDOHEADER_NOT_ALLOWED#

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

ERR_HTTP2_PUSH_DISABLED#

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

ERR_HTTP2_SEND_FILE#

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

ERR_HTTP2_SEND_FILE_NOSEEK#

尝试使用 Http2Stream.prototype.responseWithFile() API 发送非普通文件,但提供了 offsetlength 选项。

ERR_HTTP2_SESSION_ERROR#

Http2Session 以非零错误代码关闭。

ERR_HTTP2_SETTINGS_CANCEL#

Http2Session 设置已取消。

ERR_HTTP2_SOCKET_BOUND#

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

ERR_HTTP2_SOCKET_UNBOUND#

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

ERR_HTTP2_STATUS_101#

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

ERR_HTTP2_STATUS_INVALID#

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

ERR_HTTP2_STREAM_CANCEL#

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

ERR_HTTP2_STREAM_ERROR#

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

ERR_HTTP2_STREAM_SELF_DEPENDENCY#

设置 HTTP/2 流的优先级时,可以将该流标记为父流的依赖项。尝试将流标记为自身的依赖项时,将使用此错误代码。

ERR_HTTP2_TOO_MANY_CUSTOM_SETTINGS#

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

ERR_HTTP2_TOO_MANY_INVALID_FRAMES#

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

ERR_HTTP2_TRAILERS_ALREADY_SENT#

尾部标头已在 Http2Stream 上发送。

ERR_HTTP2_TRAILERS_NOT_READY#

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

ERR_HTTP2_UNSUPPORTED_PROTOCOL#

http2.connect() 传递了一个 URL,该 URL 使用了除 http:https: 之外的任何协议。

ERR_HTTP_BODY_NOT_ALLOWED#

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

ERR_HTTP_CONTENT_LENGTH_MISMATCH#

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

ERR_HTTP_HEADERS_SENT#

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

ERR_HTTP_INVALID_HEADER_VALUE#

指定了无效的 HTTP 标头值。

ERR_HTTP_INVALID_STATUS_CODE#

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

ERR_HTTP_REQUEST_TIMEOUT#

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

ERR_HTTP_SOCKET_ASSIGNED#

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

ERR_HTTP_SOCKET_ENCODING#

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

ERR_HTTP_TRAILER_INVALID#

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

ERR_ILLEGAL_CONSTRUCTOR#

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

ERR_IMPORT_ATTRIBUTE_MISSING#

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

ERR_IMPORT_ATTRIBUTE_TYPE_INCOMPATIBLE#

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

ERR_IMPORT_ATTRIBUTE_UNSUPPORTED#

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

ERR_INCOMPATIBLE_OPTION_PAIR#

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

ERR_INPUT_TYPE_NOT_ALLOWED#

稳定性:1 - 实验性

使用了 --input-type 标志来尝试执行文件。 此标志只能与通过 --eval--printSTDIN 的输入一起使用。

ERR_INSPECTOR_ALREADY_ACTIVATED#

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

ERR_INSPECTOR_ALREADY_CONNECTED#

在使用 node:inspector 模块时,尝试在 inspector 已经连接时进行连接。

ERR_INSPECTOR_CLOSED#

在使用 node:inspector 模块时,尝试在会话已经关闭后使用 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 模块时,尝试在使用 inspector 之前使用它。

ERR_INSPECTOR_NOT_WORKER#

在主线程上调用了一个只能从 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。 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 模块中的某些函数)遇到了具有不兼容主机的 file URL。 这种情况只可能发生在 Unix-like 系统上,其中只支持 localhost 或空主机。

ERR_INVALID_FILE_URL_PATH#

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

ERR_INVALID_HANDLE_TYPE#

尝试通过 IPC 通信通道向子进程发送不支持的 "handle"。 有关更多信息,请参阅 subprocess.send()process.send()

ERR_INVALID_HTTP_TOKEN#

提供了无效的 HTTP 令牌。

ERR_INVALID_IP_ADDRESS#

IP 地址无效。

ERR_INVALID_MIME_SYNTAX#

MIME 的语法无效。

ERR_INVALID_MODULE#

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

ERR_INVALID_MODULE_SPECIFIER#

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

ERR_INVALID_OBJECT_DEFINE_PROPERTY#

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

ERR_INVALID_PACKAGE_CONFIG#

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

ERR_INVALID_PACKAGE_TARGET#

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

ERR_INVALID_PROTOCOL#

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

ERR_INVALID_REPL_EVAL_CONFIG#

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

ERR_INVALID_REPL_INPUT#

输入可能无法在 REPL 中使用。 使用此错误的条件在 REPL 文档中描述。

ERR_INVALID_RETURN_PROPERTY#

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

ERR_INVALID_RETURN_PROPERTY_VALUE#

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

ERR_INVALID_RETURN_VALUE#

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

ERR_INVALID_STATE#

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

ERR_INVALID_SYNC_FORK_INPUT#

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

ERR_INVALID_THIS#

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

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

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

ERR_INVALID_TUPLE#

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

ERR_INVALID_TYPESCRIPT_SYNTAX#

提供的 TypeScript 语法无效。

ERR_INVALID_URI#

传递了无效的 URI。

ERR_INVALID_URL#

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

ERR_INVALID_URL_PATTERN#

将无效的 URLPattern 传递给 WHATWG [URLPattern constructor][new URLPattern(input)] 进行解析。

ERR_INVALID_URL_SCHEME#

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

ERR_IPC_CHANNEL_CLOSED#

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

ERR_IPC_DISCONNECTED#

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

ERR_IPC_ONE_PIPE#

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

ERR_IPC_SYNC_FORK#

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

ERR_IP_BLOCKED#

IP 被 net.BlockList 阻止。

ERR_LOADER_CHAIN_INCOMPLETE#

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

ERR_LOAD_SQLITE_EXTENSION#

加载 SQLite 扩展时发生错误。

ERR_MEMORY_ALLOCATION_FAILED#

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

ERR_MESSAGE_TARGET_CONTEXT_UNAVAILABLE#

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

ERR_METHOD_NOT_IMPLEMENTED#

方法是必需的但未实现。

ERR_MISSING_ARGS#

未传递 Node.js API 的必需参数。 这仅用于严格遵守 API 规范(在某些情况下,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 超出了数据视图的边界,或者 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#

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

ERR_NOT_IN_SINGLE_EXECUTABLE_APPLICATION#

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

ERR_NOT_SUPPORTED_IN_SNAPSHOT#

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

ERR_NO_CRYPTO#

尝试使用加密功能,但 Node.js 没有使用 OpenSSL 加密支持进行编译。

ERR_NO_ICU#

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

ERR_NO_TYPESCRIPT#

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

ERR_OPERATION_FAILED#

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

ERR_OPTIONS_BEFORE_BOOTSTRAPPING#

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

ERR_OUT_OF_RANGE#

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

ERR_PACKAGE_IMPORT_NOT_DEFINED#

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

ERR_PACKAGE_PATH_NOT_EXPORTED#

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

ERR_PARSE_ARGS_INVALID_OPTION_VALUE#

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

ERR_PARSE_ARGS_UNEXPECTED_POSITIONAL#

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

ERR_PARSE_ARGS_UNKNOWN_OPTION#

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

ERR_PERFORMANCE_INVALID_TIMESTAMP#

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

ERR_PERFORMANCE_MEASURE_INVALID_OPTIONS#

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

ERR_PROTO_ACCESS#

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

ERR_QUIC_APPLICATION_ERROR#

稳定性:1 - 实验性

发生了 QUIC 应用程序错误。

ERR_QUIC_CONNECTION_FAILED#

稳定性:1 - 实验性

建立 QUIC 连接失败。

ERR_QUIC_ENDPOINT_CLOSED#

稳定性:1 - 实验性

QUIC 端点因错误而关闭。

ERR_QUIC_OPEN_STREAM_FAILED#

稳定性:1 - 实验性

打开 QUIC 流失败。

ERR_QUIC_TRANSPORT_ERROR#

稳定性:1 - 实验性

发生了 QUIC 传输错误。

ERR_QUIC_VERSION_NEGOTIATION_ERROR#

稳定性:1 - 实验性

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

ERR_REQUIRE_ASYNC_MODULE#

稳定性:1 - 实验性

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

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

ERR_REQUIRE_CYCLE_MODULE#

稳定性:1 - 实验性

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

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

ERR_REQUIRE_ESM#

稳定性: 0 - 已弃用

尝试 require() 一个 ES 模块

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

ERR_SCRIPT_EXECUTION_INTERRUPTED#

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

ERR_SCRIPT_EXECUTION_TIMEOUT#

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

ERR_SERVER_ALREADY_LISTEN#

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

ERR_SERVER_NOT_RUNNING#

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

ERR_SINGLE_EXECUTABLE_APPLICATION_ASSET_NOT_FOUND#

一个键被传递给单可执行应用程序 API 以识别资产,但未找到匹配项。

ERR_SOCKET_ALREADY_BOUND#

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

ERR_SOCKET_BAD_BUFFER_SIZE#

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

ERR_SOCKET_BAD_PORT#

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

ERR_SOCKET_BAD_TYPE#

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

ERR_SOCKET_BUFFER_SIZE#

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

ERR_SOCKET_CLOSED#

尝试对已关闭的套接字进行操作。

ERR_SOCKET_CLOSED_BEFORE_CONNECTION#

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

ERR_SOCKET_CONNECTION_TIMEOUT#

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

ERR_SOCKET_DGRAM_IS_CONNECTED#

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

ERR_SOCKET_DGRAM_NOT_CONNECTED#

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

ERR_SOCKET_DGRAM_NOT_RUNNING#

进行了调用,但 UDP 子系统未运行。

ERR_SOURCE_MAP_CORRUPT#

由于源映射不存在或已损坏,因此无法解析源映射。

ERR_SOURCE_MAP_MISSING_SOURCE#

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

ERR_SOURCE_PHASE_NOT_DEFINED#

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

ERR_SQLITE_ERROR#

SQLite 返回了一个错误。

ERR_SRI_PARSE#

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

ERR_STREAM_ALREADY_FINISHED#

调用了一个流方法,由于流已完成而无法完成。

ERR_STREAM_CANNOT_PIPE#

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

ERR_STREAM_DESTROYED#

调用了一个流方法,由于使用 stream.destroy() 销毁了流而无法完成。

ERR_STREAM_NULL_VALUES#

尝试使用 null 块调用 stream.write()

ERR_STREAM_PREMATURE_CLOSE#

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

ERR_STREAM_PUSH_AFTER_EOF#

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

ERR_STREAM_UNABLE_TO_PIPE#

尝试在管道中管道传输到已关闭或已销毁的流。

ERR_STREAM_UNSHIFT_AFTER_END_EVENT#

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

ERR_STREAM_WRAP#

如果 Socket 上设置了字符串解码器,或者解码器处于 objectMode 中,则防止中止。

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

instance.setEncoding('utf8'); 

ERR_STREAM_WRITE_AFTER_END#

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

ERR_STRING_TOO_LONG#

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

ERR_SYNTHETIC#

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

ERR_SYSTEM_ERROR#

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

ERR_TEST_FAILURE#

此错误表示测试失败。有关失败的更多信息可通过 cause 属性获得。failureType 属性指定发生失败时测试正在执行的操作。

ERR_TLS_ALPN_CALLBACK_INVALID_RESULT#

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

ERR_TLS_ALPN_CALLBACK_WITH_PROTOCOLS#

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

ERR_TLS_CERT_ALTNAME_FORMAT#

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

ERR_TLS_CERT_ALTNAME_INVALID#

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

ERR_TLS_DH_PARAM_SIZE#

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

ERR_TLS_HANDSHAKE_TIMEOUT#

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

ERR_TLS_INVALID_CONTEXT#

上下文必须是 SecureContext

ERR_TLS_INVALID_PROTOCOL_METHOD#

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

ERR_TLS_INVALID_PROTOCOL_VERSION#

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

ERR_TLS_INVALID_STATE#

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

ERR_TLS_PROTOCOL_VERSION_CONFLICT#

尝试设置 TLS 协议 minVersionmaxVersion 与显式设置 secureProtocol 的尝试相冲突。使用其中一种机制。

ERR_TLS_PSK_SET_IDENTITY_HINT_FAILED#

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

ERR_TLS_RENEGOTIATION_DISABLED#

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

ERR_TLS_REQUIRED_SERVER_NAME#

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

ERR_TLS_SESSION_ATTACK#

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

ERR_TLS_SNI_FROM_SERVER#

尝试从 TLS 服务器端套接字发出服务器名称指示,这仅对客户端有效。

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 - 实验性

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

ERR_UNKNOWN_MODULE_FORMAT#

稳定性:1 - 实验性

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

ERR_UNKNOWN_SIGNAL#

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

ERR_UNSUPPORTED_DIR_IMPORT#

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

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

ERR_UNSUPPORTED_ESM_URL_SCHEME#

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

ERR_UNSUPPORTED_NODE_MODULES_TYPE_STRIPPING#

类型剥离不受 node_modules 目录的后代文件的支持。

ERR_UNSUPPORTED_RESOLVE_REQUEST#

尝试解析无效的模块引用者。当从 URL 方案不是 file 的模块导入或调用 import.meta.resolve() 时,可能会发生这种情况,其中

try {
  // Trying to import the package 'bare-specifier' from a `data:` URL module:
  await import('data:text/javascript,import "bare-specifier"');
} catch (e) {
  console.log(e.code); // ERR_UNSUPPORTED_RESOLVE_REQUEST
} 

ERR_UNSUPPORTED_TYPESCRIPT_SYNTAX#

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

ERR_USE_AFTER_CLOSE#

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

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

ERR_VM_MODULE_NOT_MODULE#

链接 Promise 的已实现值不是 vm.Module 对象。

ERR_VM_MODULE_STATUS#

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

ERR_WASI_ALREADY_STARTED#

WASI 实例已经启动。

ERR_WASI_NOT_STARTED#

WASI 实例尚未启动。

ERR_WEBASSEMBLY_RESPONSE#

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

ERR_WORKER_INIT_FAILED#

Worker 初始化失败。

ERR_WORKER_INVALID_EXEC_ARGV#

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

ERR_WORKER_MESSAGING_ERRORED#

稳定性: 1.1 - 活跃开发

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

ERR_WORKER_MESSAGING_FAILED#

稳定性: 1.1 - 活跃开发

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

ERR_WORKER_MESSAGING_SAME_THREAD#

稳定性: 1.1 - 活跃开发

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

ERR_WORKER_MESSAGING_TIMEOUT#

稳定性: 1.1 - 活跃开发

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

ERR_WORKER_NOT_RUNNING#

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

ERR_WORKER_OUT_OF_MEMORY#

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

ERR_WORKER_PATH#

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

ERR_WORKER_UNSERIALIZABLE_ERROR#

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

ERR_WORKER_UNSUPPORTED_OPERATION#

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

ERR_ZLIB_INITIALIZATION_FAILED#

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

ERR_ZSTD_INVALID_PARAM#

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

HPE_CHUNK_EXTENSIONS_OVERFLOW#

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

HPE_HEADER_OVERFLOW#

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

HPE_UNEXPECTED_CONTENT_LENGTH#

服务器同时发送了 Content-Length 标头和 Transfer-Encoding: chunked

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

使用 Content-LengthTransfer-Encoding: chunked

MODULE_NOT_FOUND#

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

旧版 Node.js 错误代码#

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

ERR_CANNOT_TRANSFER_OBJECT#

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

ERR_CPU_USAGE#

来自 process.cpuUsage 的本机调用无法处理。

ERR_CRYPTO_HASH_DIGEST_NO_UTF16#

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

ERR_CRYPTO_SCRYPT_INVALID_PARAMETER#

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

ERR_FS_INVALID_SYMLINK_TYPE#

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

ERR_HTTP2_FRAME_ERROR#

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

ERR_HTTP2_HEADERS_OBJECT#

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

ERR_HTTP2_HEADER_REQUIRED#

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

ERR_HTTP2_INFO_HEADERS_AFTER_RESPOND#

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

ERR_HTTP2_STREAM_CLOSED#

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

ERR_HTTP_INVALID_CHAR#

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

ERR_IMPORT_ASSERTION_TYPE_FAILED#

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

ERR_IMPORT_ASSERTION_TYPE_MISSING#

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

ERR_IMPORT_ASSERTION_TYPE_UNSUPPORTED#

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

ERR_INDEX_OUT_OF_RANGE#

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

ERR_INVALID_OPT_VALUE#

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

ERR_INVALID_OPT_VALUE_ENCODING#

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

ERR_INVALID_PERFORMANCE_MARK#

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

ERR_INVALID_TRANSFER_OBJECT#

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

ERR_MANIFEST_ASSERT_INTEGRITY#

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

ERR_MANIFEST_DEPENDENCY_MISSING#

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

ERR_MANIFEST_INTEGRITY_MISMATCH#

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

ERR_MANIFEST_INVALID_RESOURCE_FIELD#

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

ERR_MANIFEST_INVALID_SPECIFIER#

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

ERR_MANIFEST_PARSE_POLICY#

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

ERR_MANIFEST_TDZ#

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

ERR_MANIFEST_UNKNOWN_ONERROR#

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

ERR_MISSING_MESSAGE_PORT_IN_TRANSFER_LIST#

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

ERR_MISSING_TRANSFERABLE_IN_TRANSFER_LIST#

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

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

ERR_NAPI_CONS_PROTOTYPE_OBJECT#

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

ERR_NAPI_TSFN_START_IDLE_LOOP#

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

ERR_NAPI_TSFN_STOP_IDLE_LOOP#

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

ERR_NO_LONGER_SUPPORTED#

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

ERR_OUTOFMEMORY#

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

ERR_PARSE_HISTORY_DATA#

node:repl 模块无法解析 REPL 历史文件中的数据。

ERR_SOCKET_CANNOT_SEND#

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

ERR_STDERR_CLOSE#

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

ERR_STDOUT_CLOSE#

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

ERR_STREAM_READ_NOT_IMPLEMENTED#

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

ERR_TAP_LEXER_ERROR#

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

ERR_TAP_PARSER_ERROR#

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

ERR_TAP_VALIDATION_ERROR#

此错误表示 TAP 验证失败。

ERR_TLS_RENEGOTIATION_FAILED#

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

ERR_TRANSFERRING_EXTERNALIZED_SHAREDARRAYBUFFER#

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

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

ERR_UNKNOWN_STDIN_TYPE#

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

ERR_UNKNOWN_STREAM_TYPE#

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

ERR_V8BREAKITERATOR#

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

ERR_VALUE_OUT_OF_RANGE#

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

ERR_VM_MODULE_LINKING_ERRORED#

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

ERR_VM_MODULE_NOT_LINKED#

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

ERR_WORKER_UNSUPPORTED_EXTENSION#

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

ERR_ZLIB_BINDING_CLOSED#

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

OpenSSL 错误代码#

时间有效性错误#

CERT_NOT_YET_VALID#

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

CERT_HAS_EXPIRED#

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

CRL_NOT_YET_VALID#

证书吊销列表(CRL)具有未来的发布日期。

CRL_HAS_EXPIRED#

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

CERT_REVOKED#

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

信任或链相关错误#

UNABLE_TO_GET_ISSUER_CERT#

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

UNABLE_TO_GET_ISSUER_CERT_LOCALLY#

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

DEPTH_ZERO_SELF_SIGNED_CERT#

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

SELF_SIGNED_CERT_IN_CHAIN#

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

CERT_CHAIN_TOO_LONG#

证书链长度大于最大深度。

UNABLE_TO_GET_CRL#

找不到证书引用的 CRL。

UNABLE_TO_VERIFY_LEAF_SIGNATURE#

由于链中仅包含一个证书并且它不是自签名证书,因此无法验证任何签名。

CERT_UNTRUSTED#

根证书颁发机构(CA)未标记为受信任用于指定目的。

基本扩展错误#

INVALID_CA#

CA 证书无效。 它既不是 CA,其扩展也不与提供的目的相符。

PATH_LENGTH_EXCEEDED#

已超过 basicConstraints pathlength 参数。

名称相关错误#

HOSTNAME_MISMATCH#

证书与提供的名称不匹配。

使用和策略错误#

INVALID_PURPOSE#

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

CERT_REJECTED#

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

格式错误#

CERT_SIGNATURE_FAILURE#

证书的签名无效。

CRL_SIGNATURE_FAILURE#

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

ERROR_IN_CERT_NOT_BEFORE_FIELD#

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

ERROR_IN_CERT_NOT_AFTER_FIELD#

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

ERROR_IN_CRL_LAST_UPDATE_FIELD#

CRL lastUpdate 字段包含无效时间。

ERROR_IN_CRL_NEXT_UPDATE_FIELD#

CRL nextUpdate 字段包含无效时间。

UNABLE_TO_DECRYPT_CERT_SIGNATURE#

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

UNABLE_TO_DECRYPT_CRL_SIGNATURE#

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

UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY#

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

其他 OpenSSL 错误#

OUT_OF_MEM#

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