錯誤#

在 Node.js 中執行的應用程式通常會遇到以下幾類錯誤:

  • 標準的 JavaScript 錯誤,例如 <EvalError><SyntaxError><RangeError><ReferenceError><TypeError><URIError>
  • 標準的 DOMException
  • 由底層作業系統約束觸發的系統錯誤,例如嘗試開啟一個不存在的檔案或嘗試透過一個已關閉的套接字傳送資料。
  • AssertionError 是一種特殊型別的錯誤,當 Node.js 檢測到一個絕不應該發生的異常邏輯違規時觸發。這些錯誤通常由 node:assert 模組引發。
  • 由應用程式程式碼觸發的使用者指定錯誤。

所有由 Node.js 引發的 JavaScript 和系統錯誤都繼承自或例項化自標準的 JavaScript <Error> 類,並保證至少提供該類上可用的屬性。

由 Node.js 丟擲的錯誤的 error.message 屬性可能在任何版本中更改。請使用 error.code 來識別錯誤。對於 DOMException,使用 domException.name 來識別其型別。

錯誤傳播與攔截#

Node.js 支援多種機制來傳播和處理應用程式執行時發生的錯誤。如何報告和處理這些錯誤完全取決於 Error 的型別和所呼叫 API 的風格。

所有 JavaScript 錯誤都作為異常處理,這些異常會使用標準的 JavaScript throw 機制立即生成並丟擲一個錯誤。這些錯誤透過 JavaScript 語言提供的 try…catch 結構來處理。

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

任何使用 JavaScript throw 機制都會引發一個異常,該異常必須被處理,否則 Node.js 程序將立即退出。

除了少數例外,同步 API(任何不返回 <Promise> 也不接受 callback 函式的阻塞方法,如 fs.readFileSync)將使用 throw 來報告錯誤。

非同步 API 中發生的錯誤可能以多種方式報告:

  • 一些非同步方法返回一個 <Promise>,你應該始終考慮到它可能會被拒絕(rejected)。關於程序如何響應未處理的 promise rejection,請參閱 --unhandled-rejections 標誌。

    const fs = require('node:fs/promises');
    
    (async () => {
      let data;
      try {
        data = await fs.readFile('a file that does not exist');
      } catch (err) {
        console.error('There was an error reading the file!', err);
        return;
      }
      // Otherwise handle the data
    })(); 
  • 大多數接受 callback 函式的非同步方法,會將一個 Error 物件作為該函式的第一個引數傳入。如果第一個引數不為 null 並且是 Error 的例項,那麼就發生了一個應該被處理的錯誤。

    const fs = require('node:fs');
    fs.readFile('a file that does not exist', (err, data) => {
      if (err) {
        console.error('There was an error reading the file!', err);
        return;
      }
      // Otherwise handle the data
    }); 
  • 當在一個作為 EventEmitter 的物件上呼叫非同步方法時,錯誤可以被路由到該物件的 'error' 事件。

    const net = require('node:net');
    const connection = net.connect('localhost');
    
    // Adding an 'error' event handler to a stream:
    connection.on('error', (err) => {
      // If the connection is reset by the server, or if it can't
      // connect at all, or on any sort of error encountered by
      // the connection, the error will be sent here.
      console.error(err);
    });
    
    connection.pipe(process.stdout); 
  • Node.js API 中少數通常是非同步的方法可能仍會使用 throw 機制來引發必須使用 try…catch 處理的異常。沒有此類方法的詳盡列表;請參考每個方法的文件以確定所需的適當錯誤處理機制。

'error' 事件機制的使用最常見於基於流基於事件發射器的 API,這些 API 本身代表了一系列隨時間發生的非同步操作(而不是可能成功或失敗的單個操作)。

對於所有 EventEmitter 物件,如果沒有提供 'error' 事件處理程式,錯誤將被丟擲,導致 Node.js 程序報告一個未捕獲的異常並崩潰,除非:為 'uncaughtException' 事件註冊了處理程式,或者使用了已廢棄的 node:domain 模組。

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

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

以這種方式生成的錯誤不能使用 try…catch 攔截,因為它們是在呼叫程式碼已經退出之後丟擲的。

開發者必須參考每個方法的文件,以確定這些方法引發的錯誤是如何傳播的。

類:Error#

一個通用的 JavaScript <Error> 物件,不表示任何發生錯誤的具體情況。Error 物件捕獲一個“堆疊跟蹤”,詳細說明了 Error 被例項化時在程式碼中的位置,並可能提供錯誤的文字描述。

所有由 Node.js 生成的錯誤,包括所有系統和 JavaScript 錯誤,都將是 Error 類的例項或繼承自該類。

new Error(message[, options])#

建立一個新的 Error 物件,並將 error.message 屬性設定為提供的文字訊息。如果將一個物件作為 message 傳遞,則透過呼叫 String(message) 生成文字訊息。如果提供了 cause 選項,它將被賦給 error.cause 屬性。error.stack 屬性將表示 new Error() 被呼叫時在程式碼中的位置。堆疊跟蹤依賴於 V8 的堆疊跟蹤 API。堆疊跟蹤僅延伸至(a)同步程式碼執行的開始,或(b)由 Error.stackTraceLimit 屬性給出的幀數,以較小者為準。

Error.captureStackTrace(targetObject[, constructorOpt])#

targetObject 上建立一個 .stack 屬性,當訪問該屬性時,它返回一個字串,表示 Error.captureStackTrace() 被呼叫時在程式碼中的位置。

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

跟蹤的第一行將以 ${myObject.name}: ${myObject.message} 為字首。

可選的 constructorOpt 引數接受一個函式。如果給出,所有在 constructorOpt 之上的幀,包括 constructorOpt 本身,都將從生成的堆疊跟蹤中省略。

constructorOpt 引數對於向用戶隱藏錯誤生成的實現細節很有用。例如:

function a() {
  b();
}

function b() {
  c();
}

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

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

a(); 

Error.stackTraceLimit#

Error.stackTraceLimit 屬性指定了堆疊跟蹤收集的堆疊幀數(無論是透過 new Error().stack 還是 Error.captureStackTrace(obj) 生成的)。

預設值是 10,但可以設定為任何有效的 JavaScript 數字。更改將影響在值更改之後捕獲的任何堆疊跟蹤。

如果設定為非數字值或負數,堆疊跟蹤將不捕獲任何幀。

error.cause#

如果存在,error.cause 屬性是 Error 的根本原因。當捕獲一個錯誤並丟擲一個具有不同訊息或程式碼的新錯誤時,可以使用它來仍然訪問原始錯誤。

error.cause 屬性通常透過呼叫 new Error(message, { cause }) 來設定。如果未提供 cause 選項,建構函式不會設定此屬性。

此屬性允許錯誤鏈。當序列化 Error 物件時,如果設定了 error.causeutil.inspect() 會遞迴地序列化它。

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

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

error.code#

error.code 屬性是一個字串標籤,用於標識錯誤的型別。error.code 是識別錯誤最穩定的方式。它只會在 Node.js 的主版本之間更改。相比之下,error.message 字串可能在任何 Node.js 版本之間更改。有關特定程式碼的詳細資訊,請參見 Node.js 錯誤碼

error.message#

error.message 屬性是透過呼叫 new Error(message) 設定的錯誤的字串描述。傳遞給建構函式的 message 也將出現在 Error 堆疊跟蹤的第一行,但是,在 Error 物件建立後更改此屬性可能不會更改堆疊跟蹤的第一行(例如,當在更改此屬性之前讀取 error.stack 時)。

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

error.stack#

error.stack 屬性是一個字串,描述了 Error 被例項化時在程式碼中的位置。

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

第一行格式為 <錯誤類名>: <錯誤訊息>,後面跟著一系列堆疊幀(每行以 "at " 開頭)。每個幀描述了程式碼中導致錯誤生成的呼叫點。V8 嘗試為每個函式顯示一個名稱(透過變數名、函式名或物件方法名),但有時它無法找到合適的名稱。如果 V8 無法確定函式的名稱,則該幀將只顯示位置資訊。否則,確定的函式名將與附加在括號中的位置資訊一起顯示。

幀僅為 JavaScript 函式生成。例如,如果執行同步地透過一個名為 cheetahify 的 C++ 外掛函式,而該函式本身又呼叫了一個 JavaScript 函式,那麼代表 cheetahify 呼叫的幀將不會出現在堆疊跟蹤中:

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

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

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

位置資訊將是以下之一:

  • native,如果該幀代表 V8 內部的呼叫(如 [].forEach)。
  • plain-filename.js:line:column,如果該幀代表 Node.js 內部的呼叫。
  • /absolute/path/to/file.js:line:column,如果該幀代表使用者程式(使用 CommonJS 模組系統)或其依賴項中的呼叫。
  • <transport-protocol>:///url/to/module/file.mjs:line:column,如果該幀代表使用者程式(使用 ES 模組系統)或其依賴項中的呼叫。

表示堆疊跟蹤的字串是在 error.stack 屬性被訪問時延遲生成的。

堆疊跟蹤捕獲的幀數受 Error.stackTraceLimit 或當前事件迴圈 tick 上可用幀數的較小者限制。

類:AssertionError#

表示斷言失敗。詳情請見 類:assert.AssertionError

類:RangeError#

表示提供的引數不在函式可接受的值集或範圍內;無論是數值範圍,還是給定函式引數的選項集之外。

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

Node.js 會作為引數驗證的一種形式立即生成並丟擲 RangeError 例項。

類:ReferenceError#

表示正在嘗試訪問一個未定義的變數。此類錯誤通常表示程式碼中的拼寫錯誤或其他損壞的程式。

雖然客戶端程式碼可以生成和傳播這些錯誤,但在實踐中,只有 V8 會這樣做。

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

除非應用程式是動態生成和執行程式碼,否則 ReferenceError 例項表示程式碼或其依賴項中存在 bug。

類:SyntaxError#

表示程式不是有效的 JavaScript。這些錯誤只能在程式碼評估的結果中生成和傳播。程式碼評估可能由於 evalFunctionrequirevm 而發生。這些錯誤幾乎總是表示一個損壞的程式。

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

SyntaxError 例項在建立它們的上下文中是不可恢復的——它們只能被其他上下文捕獲。

類:SystemError#

Node.js 在其執行時環境中發生異常時會生成系統錯誤。這些通常發生在應用程式違反作業系統約束時。例如,如果應用程式嘗試讀取一個不存在的檔案,就會發生系統錯誤。

  • address <string> 如果存在,網路連線失敗的地址
  • code <string> 字串錯誤程式碼
  • dest <string> 如果存在,報告檔案系統錯誤時的目標檔案路徑
  • errno <number> 系統提供的錯誤號
  • info <Object> 如果存在,關於錯誤狀況的額外詳情
  • message <string> 系統提供的可讀錯誤描述
  • path <string> 如果存在,報告檔案系統錯誤時的檔案路徑
  • port <number> 如果存在,不可用的網路連線埠
  • syscall <string> 觸發錯誤的系統呼叫的名稱

error.address#

如果存在,error.address 是一個描述網路連線失敗地址的字串。

error.code#

error.code 屬性是一個表示錯誤程式碼的字串。

error.dest#

如果存在,error.dest 是報告檔案系統錯誤時的目標檔案路徑。

error.errno#

error.errno 屬性是一個負數,對應於 libuv 錯誤處理 中定義的錯誤程式碼。

在 Windows 上,系統提供的錯誤號將由 libuv 進行規範化。

要獲取錯誤程式碼的字串表示形式,請使用 util.getSystemErrorName(error.errno)

error.info#

如果存在,error.info 是一個包含錯誤狀況詳細資訊的物件。

error.message#

error.message 是系統提供的可讀錯誤描述。

error.path#

如果存在,error.path 是一個包含相關無效路徑名的字串。

error.port#

如果存在,error.port 是不可用的網路連線埠。

error.syscall#

error.syscall 屬性是一個描述失敗的 syscall 的字串。

常見系統錯誤#

這是編寫 Node.js 程式時常遇到的系統錯誤列表。有關完整列表,請參見 errno(3) 手冊頁

  • EACCES (Permission denied): 嘗試以檔案訪問許可權禁止的方式訪問檔案。

  • EADDRINUSE (Address already in use): 嘗試將伺服器(nethttphttps)繫結到本地地址失敗,因為本地系統上的另一個伺服器已佔用該地址。

  • ECONNREFUSED (Connection refused): 無法建立連線,因為目標機器主動拒絕了它。這通常是由於嘗試連線到外部主機上不活動的服務造成的。

  • ECONNRESET (Connection reset by peer): 連線被對等方強制關閉。這通常是由於遠端套接字上的連線因超時或重啟而丟失造成的。通常透過 httpnet 模組遇到。

  • EEXIST (File exists): 一個現有檔案是一個要求目標不存在的操作的目標。

  • EISDIR (Is a directory): 一個操作期望的是一個檔案,但給定的路徑名是一個目錄。

  • EMFILE (Too many open files in system): 系統上允許的檔案描述符最大數量已達到,並且在至少關閉一個之前無法滿足另一個描述符的請求。這在並行開啟許多檔案時會遇到,尤其是在程序的檔案描述符限制較低的系統(特別是 macOS)上。要解決低限制問題,請在將執行 Node.js 程序的同一 shell 中執行 ulimit -n 2048

  • ENOENT (No such file or directory): 通常由 fs 操作引發,表示指定路徑名的某個元件不存在。給定路徑下找不到任何實體(檔案或目錄)。

  • ENOTDIR (Not a directory): 給定路徑名的元件存在,但不是預期的目錄。通常由 fs.readdir 引發。

  • ENOTEMPTY (Directory not empty): 一個有條目的目錄是一個需要空目錄的操作的目標,通常是 fs.unlink

  • ENOTFOUND (DNS lookup failed): 表示 EAI_NODATAEAI_NONAME 的 DNS 失敗。這不是一個標準的 POSIX 錯誤。

  • EPERM (Operation not permitted): 嘗試執行需要提升許可權的操作。

  • EPIPE (Broken pipe): 在一個沒有程序讀取資料的管道、套接字或 FIFO 上的寫操作。通常在 nethttp 層遇到,表明正在寫入的流的遠端端已關閉。

  • ETIMEDOUT (Operation timed out): 連線或傳送請求失敗,因為連線方在一段時間後沒有正確響應。通常由 httpnet 遇到。通常是未正確呼叫 socket.end() 的跡象。

類:TypeError#

表示提供的引數不是允許的型別。例如,將一個函式傳遞給一個期望字串的引數將是 TypeError

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

Node.js 會作為引數驗證的一種形式立即生成並丟擲 TypeError 例項。

異常 vs. 錯誤#

JavaScript 異常是由於無效操作或作為 throw 語句的目標而丟擲的值。雖然不要求這些值是 Error 的例項或繼承自 Error 的類,但 Node.js 或 JavaScript 執行時丟擲的所有異常都將Error 的例項。

有些異常在 JavaScript 層是不可恢復的。此類異常將總是導致 Node.js 程序崩潰。例如 C++ 層的 assert() 檢查或 abort() 呼叫。

OpenSSL 錯誤#

源於 cryptotls 的錯誤屬於 Error 類,除了標準的 .code.message 屬性外,還可能有一些額外的 OpenSSL 特定屬性。

error.opensslErrorStack#

一個錯誤陣列,可以提供錯誤在 OpenSSL 庫中源於何處的上下文。

error.function#

錯誤源於的 OpenSSL 函式。

error.library#

錯誤源於的 OpenSSL 庫。

error.reason#

一個描述錯誤原因的可讀字串。

Node.js 錯誤碼#

ABORT_ERR#

當一個操作被中止時使用(通常使用 AbortController)。

使用 AbortSignal 的 API 通常不會引發此程式碼的錯誤。

此程式碼不使用 Node.js 錯誤使用的常規 ERR_* 約定,以與 Web 平臺的 AbortError 相容。

ERR_ACCESS_DENIED#

一種特殊型別的錯誤,每當 Node.js 嘗試訪問受許可權模型限制的資源時觸發。

ERR_AMBIGUOUS_ARGUMENT#

函式引數的使用方式表明函式簽名可能被誤解了。當 node:assert 模組中 assert.throws(block, message)message 引數與 block 丟擲的錯誤訊息匹配時,會丟擲此錯誤,因為這種用法表明使用者認為 message 是預期的訊息,而不是在 block 未丟擲時 AssertionError 將顯示的訊息。

ERR_ARG_NOT_ITERABLE#

需要一個可迭代引數(即一個適用於 for...of 迴圈的值),但未提供給 Node.js API。

ERR_ASSERTION#

一種特殊型別的錯誤,當 Node.js 檢測到絕不應該發生的異常邏輯違規時觸發。這些錯誤通常由 node:assert 模組引發。

ERR_ASYNC_CALLBACK#

嘗試將非函式註冊為 AsyncHooks 回撥。

ERR_ASYNC_TYPE#

非同步資源的型別無效。如果使用公共嵌入器 API,使用者也可以定義自己的型別。

ERR_BROTLI_COMPRESSION_FAILED#

傳遞給 Brotli 流的資料未成功壓縮。

ERR_BROTLI_INVALID_PARAM#

在構建 Brotli 流期間傳遞了無效的引數鍵。

ERR_BUFFER_CONTEXT_NOT_AVAILABLE#

嘗試從外掛或嵌入器程式碼中建立一個 Node.js Buffer 例項,而此時所在的 JS 引擎上下文並未與 Node.js 例項關聯。傳遞給 Buffer 方法的資料在方法返回時已經被釋放。

遇到此錯誤時,建立 Buffer 例項的一個可能替代方案是建立一個普通的 Uint8Array,它只在結果物件的原型上有所不同。Uint8Array 通常在所有 Node.js 核心 API 中被接受,在這些 API 中 Buffer 也是可用的;它們在所有上下文中都可用。

ERR_BUFFER_OUT_OF_BOUNDS#

嘗試了超出 Buffer 邊界的操作。

ERR_BUFFER_TOO_LARGE#

嘗試建立一個大於最大允許大小的 Buffer

ERR_CANNOT_WATCH_SIGINT#

Node.js 無法監視 SIGINT 訊號。

ERR_CHILD_CLOSED_BEFORE_REPLY#

子程序在父程序收到回覆之前關閉。

ERR_CHILD_PROCESS_IPC_REQUIRED#

在未指定 IPC 通道的情況下派生子程序時使用。

ERR_CHILD_PROCESS_STDIO_MAXBUFFER#

當主程序試圖從子程序的 STDERR/STDOUT 讀取資料,並且資料長度超過 maxBuffer 選項時使用。

ERR_CLOSED_MESSAGE_PORT#

嘗試在一個已關閉狀態的 MessagePort 例項上進行操作,通常是在呼叫 .close() 之後。

ERR_CONSOLE_WRITABLE_STREAM#

在沒有 stdout 流的情況下例項化 Console,或者 Console 具有不可寫的 stdoutstderr 流。

ERR_CONSTRUCT_CALL_INVALID#

呼叫了一個不可呼叫的類建構函式。

ERR_CONSTRUCT_CALL_REQUIRED#

一個類的建構函式在沒有 new 的情況下被呼叫。

ERR_CONTEXT_NOT_INITIALIZED#

傳入 API 的 vm 上下文尚未初始化。這可能在建立上下文期間發生錯誤(並被捕獲)時發生,例如,當分配失敗或在建立上下文時達到最大呼叫堆疊大小時。

ERR_CPU_PROFILE_ALREADY_STARTED#

給定名稱的 CPU 效能分析已經啟動。

ERR_CPU_PROFILE_NOT_STARTED#

給定名稱的 CPU 效能分析未啟動。

ERR_CPU_PROFILE_TOO_MANY#

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

ERR_CRYPTO_ARGON2_NOT_SUPPORTED#

當前使用的 OpenSSL 版本不支援 Argon2。

ERR_CRYPTO_CUSTOM_ENGINE_NOT_SUPPORTED#

請求了一個 OpenSSL 引擎(例如,透過 clientCertEngineprivateKeyEngine TLS 選項),但當前使用的 OpenSSL 版本不支援該引擎,可能是因為編譯時標誌 OPENSSL_NO_ENGINE

ERR_CRYPTO_ECDH_INVALID_FORMAT#

crypto.ECDH() 類的 getPublicKey() 方法傳遞了無效的 format 引數值。

ERR_CRYPTO_ECDH_INVALID_PUBLIC_KEY#

crypto.ECDH() 類的 computeSecret() 方法傳遞了無效的 key 引數值。這意味著公鑰位於橢圓曲線之外。

ERR_CRYPTO_ENGINE_UNKNOWN#

require('node:crypto').setEngine() 傳遞了無效的加密引擎識別符號。

ERR_CRYPTO_FIPS_FORCED#

使用了 --force-fips 命令列引數,但嘗試在 node:crypto 模組中啟用或停用 FIPS 模式。

ERR_CRYPTO_FIPS_UNAVAILABLE#

嘗試啟用或停用 FIPS 模式,但 FIPS 模式不可用。

ERR_CRYPTO_HASH_FINALIZED#

多次呼叫了 hash.digest()hash.digest() 方法對於每個 Hash 物件例項最多隻能呼叫一次。

ERR_CRYPTO_HASH_UPDATE_FAILED#

hash.update() 因任何原因失敗。這應該很少發生,如果會發生的話。

ERR_CRYPTO_INCOMPATIBLE_KEY#

給定的加密金鑰與嘗試的操作不相容。

ERR_CRYPTO_INCOMPATIBLE_KEY_OPTIONS#

所選的公鑰或私鑰編碼與其他選項不相容。

ERR_CRYPTO_INITIALIZATION_FAILED#

加密子系統初始化失敗。

ERR_CRYPTO_INVALID_AUTH_TAG#

提供了無效的認證標籤。

ERR_CRYPTO_INVALID_COUNTER#

為計數器模式密碼提供了無效的計數器。

ERR_CRYPTO_INVALID_CURVE#

提供了無效的橢圓曲線。

ERR_CRYPTO_INVALID_DIGEST#

指定了無效的加密摘要演算法

ERR_CRYPTO_INVALID_IV#

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

ERR_CRYPTO_INVALID_JWK#

提供了無效的 JSON Web Key。

ERR_CRYPTO_INVALID_KEYLEN#

提供了無效的金鑰長度。

ERR_CRYPTO_INVALID_KEYPAIR#

提供了無效的金鑰對。

ERR_CRYPTO_INVALID_KEYTYPE#

提供了無效的金鑰型別。

ERR_CRYPTO_INVALID_KEY_OBJECT_TYPE#

給定的加密金鑰物件的型別對於嘗試的操作無效。

ERR_CRYPTO_INVALID_MESSAGELEN#

提供了無效的訊息長度。

ERR_CRYPTO_INVALID_SCRYPT_PARAMS#

一個或多個 crypto.scrypt()crypto.scryptSync() 引數超出了其合法範圍。

ERR_CRYPTO_INVALID_STATE#

在一個處於無效狀態的物件上使用了加密方法。例如,在呼叫 cipher.final() 之前呼叫 cipher.getAuthTag()

ERR_CRYPTO_INVALID_TAG_LENGTH#

提供了無效的認證標籤長度。

ERR_CRYPTO_JOB_INIT_FAILED#

非同步加密操作初始化失敗。

ERR_CRYPTO_JWK_UNSUPPORTED_CURVE#

金鑰的橢圓曲線未在 JSON Web Key 橢圓曲線登錄檔中註冊使用。

ERR_CRYPTO_JWK_UNSUPPORTED_KEY_TYPE#

金鑰的非對稱金鑰型別未在 JSON Web Key 型別登錄檔中註冊使用。

ERR_CRYPTO_KEM_NOT_SUPPORTED#

嘗試使用 KEM 操作,而 Node.js 未編譯 OpenSSL KEM 支援。

ERR_CRYPTO_OPERATION_FAILED#

一個加密操作因未指定的原因失敗。

ERR_CRYPTO_PBKDF2_ERROR#

PBKDF2 演算法因未指定的原因失敗。OpenSSL 沒有提供更多細節,因此 Node.js 也沒有。

ERR_CRYPTO_SCRYPT_NOT_SUPPORTED#

Node.js 在編譯時沒有 scrypt 支援。官方釋出二進位制檔案不可能出現這種情況,但自定義構建(包括髮行版構建)可能會發生。

ERR_CRYPTO_SIGN_KEY_REQUIRED#

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

ERR_CRYPTO_TIMING_SAFE_EQUAL_LENGTH#

使用不同長度的 BufferTypedArrayDataView 引數呼叫了 crypto.timingSafeEqual()

ERR_CRYPTO_UNKNOWN_CIPHER#

指定了未知的密碼。

ERR_CRYPTO_UNKNOWN_DH_GROUP#

給出了未知的 Diffie-Hellman 組名。有關有效組名的列表,請參見 crypto.getDiffieHellman()

ERR_CRYPTO_UNSUPPORTED_OPERATION#

嘗試呼叫不支援的加密操作。

ERR_DEBUGGER_ERROR#

使用偵錯程式時發生錯誤。

ERR_DEBUGGER_STARTUP_ERROR#

偵錯程式等待所需的主機/埠變為空閒時超時。

ERR_DIR_CLOSED#

fs.Dir 先前已關閉。

ERR_DIR_CONCURRENT_OPERATION#

在一個有正在進行的非同步操作的 fs.Dir 上嘗試了同步讀取或關閉呼叫。

ERR_DLOPEN_DISABLED#

已使用 --no-addons 停用了本地外掛的載入。

ERR_DLOPEN_FAILED#

呼叫 process.dlopen() 失敗。

ERR_DNS_SET_SERVERS_FAILED#

c-ares 設定 DNS 伺服器失敗。

ERR_DOMAIN_CALLBACK_NOT_AVAILABLE#

node:domain 模組不可用,因為它無法建立所需的錯誤處理鉤子,因為 process.setUncaughtExceptionCaptureCallback() 已在較早的時間點被呼叫。

ERR_DOMAIN_CANNOT_SET_UNCAUGHT_EXCEPTION_CAPTURE#

無法呼叫 process.setUncaughtExceptionCaptureCallback(),因為 node:domain 模組已在較早的時間點載入。

堆疊跟蹤被擴充套件以包含 node:domain 模組被載入的時間點。

ERR_DUPLICATE_STARTUP_SNAPSHOT_MAIN_FUNCTION#

無法呼叫 v8.startupSnapshot.setDeserializeMainFunction(),因為它之前已經被呼叫過。

ERR_ENCODING_INVALID_ENCODED_DATA#

提供給 TextDecoder() API 的資料根據提供的編碼是無效的。

ERR_ENCODING_NOT_SUPPORTED#

提供給 TextDecoder() API 的編碼不是 WHATWG 支援的編碼之一。

ERR_EVAL_ESM_CANNOT_PRINT#

--print 不能與 ESM 輸入一起使用。

ERR_EVENT_RECURSION#

當嘗試在 EventTarget 上遞迴地分派事件時丟擲。

ERR_EXECUTION_ENVIRONMENT_NOT_AVAILABLE#

JS 執行上下文未與 Node.js 環境關聯。當 Node.js 作為嵌入式庫使用且 JS 引擎的某些鉤子未正確設定時,可能會發生這種情況。

ERR_FALSY_VALUE_REJECTION#

透過 util.callbackify() 回撥化的 Promise 被一個假值拒絕了。

ERR_FEATURE_UNAVAILABLE_ON_PLATFORM#

當使用了在當前執行 Node.js 的平臺上不可用的功能時使用。

ERR_FS_CP_DIR_TO_NON_DIR#

嘗試使用 fs.cp() 將目錄複製到非目錄(檔案、符號連結等)。

ERR_FS_CP_EEXIST#

嘗試使用 fs.cp() 覆蓋一個已存在的檔案,且 forceerrorOnExist 設定為 true

ERR_FS_CP_EINVAL#

使用 fs.cp() 時,srcdest 指向一個無效路徑。

ERR_FS_CP_FIFO_PIPE#

嘗試使用 fs.cp() 複製一個命名管道。

ERR_FS_CP_NON_DIR_TO_DIR#

嘗試使用 fs.cp() 將非目錄(檔案、符號連結等)複製到一個目錄。

ERR_FS_CP_SOCKET#

嘗試使用 fs.cp() 複製到一個套接字。

ERR_FS_CP_SYMLINK_TO_SUBDIRECTORY#

使用 fs.cp() 時,dest 中的一個符號連結指向了 src 的一個子目錄。

ERR_FS_CP_UNKNOWN#

嘗試使用 fs.cp() 複製到未知檔案型別。

ERR_FS_EISDIR#

路徑是一個目錄。

ERR_FS_FILE_TOO_LARGE#

嘗試讀取一個大於 fs.readFile() 所支援的 2 GiB 限制的檔案。這不是 Buffer 的限制,而是一個內部 I/O 約束。要處理更大的檔案,請考慮使用 fs.createReadStream() 來分塊讀取檔案。

ERR_FS_WATCH_QUEUE_OVERFLOW#

排隊等待處理的檔案系統事件數量超過了 fs.watch()maxQueue 指定的大小。

ERR_HTTP2_ALTSVC_INVALID_ORIGIN#

HTTP/2 ALTSVC 幀需要一個有效的源。

ERR_HTTP2_ALTSVC_LENGTH#

HTTP/2 ALTSVC 幀的有效載荷位元組數限制為最大 16,382 位元組。

ERR_HTTP2_CONNECT_AUTHORITY#

對於使用 CONNECT 方法的 HTTP/2 請求,需要 :authority 偽頭部。

ERR_HTTP2_CONNECT_PATH#

對於使用 CONNECT 方法的 HTTP/2 請求,禁止使用 :path 偽頭部。

ERR_HTTP2_CONNECT_SCHEME#

對於使用 CONNECT 方法的 HTTP/2 請求,禁止使用 :scheme 偽頭部。

ERR_HTTP2_ERROR#

發生了一個非特定的 HTTP/2 錯誤。

ERR_HTTP2_GOAWAY_SESSION#

Http2Session 收到來自連線對等方的 GOAWAY 幀後,可能無法開啟新的 HTTP/2 流。

ERR_HTTP2_HEADERS_AFTER_RESPOND#

在 HTTP/2 響應啟動後指定了額外的頭部。

ERR_HTTP2_HEADERS_SENT#

嘗試傳送多個響應頭部。

ERR_HTTP2_HEADER_SINGLE_VALUE#

為一個要求只能有單個值的 HTTP/2 頭部欄位提供了多個值。

ERR_HTTP2_INFO_STATUS_NOT_ALLOWED#

資訊性 HTTP 狀態碼 (1xx) 不能設定為 HTTP/2 響應的狀態碼。

ERR_HTTP2_INVALID_CONNECTION_HEADERS#

禁止在 HTTP/2 請求和響應中使用 HTTP/1 連線特定的頭部。

ERR_HTTP2_INVALID_HEADER_VALUE#

指定了無效的 HTTP/2 頭部值。

ERR_HTTP2_INVALID_INFO_STATUS#

指定了無效的 HTTP 資訊狀態碼。資訊狀態碼必須是 100199(含)之間的整數。

ERR_HTTP2_INVALID_ORIGIN#

HTTP/2 ORIGIN 幀需要一個有效的源。

ERR_HTTP2_INVALID_PACKED_SETTINGS_LENGTH#

傳遞給 http2.getUnpackedSettings() API 的輸入 BufferUint8Array 例項的長度必須是六的倍數。

ERR_HTTP2_INVALID_PSEUDOHEADER#

只能使用有效的 HTTP/2 偽頭部(:status:path:authority:scheme:method)。

ERR_HTTP2_INVALID_SESSION#

在一個已經銷燬的 Http2Session 物件上執行了操作。

ERR_HTTP2_INVALID_SETTING_VALUE#

為 HTTP/2 設定指定了無效值。

ERR_HTTP2_INVALID_STREAM#

在一個已經銷燬的流上執行了操作。

ERR_HTTP2_MAX_PENDING_SETTINGS_ACK#

每當向連線的對等方傳送 HTTP/2 SETTINGS 幀時,對等方需要傳送一個確認,表示它已收到並應用了新的 SETTINGS。預設情況下,在任何給定時間可以傳送的最大未確認 SETTINGS 幀數是有限制的。當達到該限制時,使用此錯誤程式碼。

ERR_HTTP2_NESTED_PUSH#

嘗試從一個推送流內部啟動一個新的推送流。不允許巢狀推送流。

ERR_HTTP2_NO_MEM#

使用 http2session.setLocalWindowSize(windowSize) API 時記憶體不足。

ERR_HTTP2_NO_SOCKET_MANIPULATION#

嘗試直接操作(讀取、寫入、暫停、恢復等)一個附加到 Http2Session 的套接字。

ERR_HTTP2_ORIGIN_LENGTH#

HTTP/2 ORIGIN 幀的長度限制為 16382 位元組。

ERR_HTTP2_OUT_OF_STREAMS#

在單個 HTTP/2 會話上建立的流數量已達到最大限制。

ERR_HTTP2_PAYLOAD_FORBIDDEN#

為禁止有效載荷的 HTTP 響應程式碼指定了訊息有效載荷。

ERR_HTTP2_PING_CANCEL#

HTTP/2 ping 已被取消。

ERR_HTTP2_PING_LENGTH#

HTTP/2 ping 的有效載荷長度必須正好是 8 個位元組。

ERR_HTTP2_PSEUDOHEADER_NOT_ALLOWED#

HTTP/2 偽標頭被不當使用。偽標頭是以 : 字首開頭的標頭鍵名。

ERR_HTTP2_PUSH_DISABLED#

嘗試建立一個推送流,但該功能已被客戶端停用。

ERR_HTTP2_SEND_FILE#

嘗試使用 Http2Stream.prototype.responseWithFile() API 傳送一個目錄。

ERR_HTTP2_SEND_FILE_NOSEEK#

嘗試使用 Http2Stream.prototype.responseWithFile() API 傳送除常規檔案以外的內容,但提供了 offsetlength 選項。

ERR_HTTP2_SESSION_ERROR#

Http2Session 以非零錯誤碼關閉。

ERR_HTTP2_SETTINGS_CANCEL#

Http2Session 設定被取消。

ERR_HTTP2_SOCKET_BOUND#

嘗試將一個 Http2Session 物件連線到一個已經繫結到另一個 Http2Session 物件的 net.Sockettls.TLSSocket

ERR_HTTP2_SOCKET_UNBOUND#

嘗試使用一個已經關閉的 Http2Sessionsocket 屬性。

ERR_HTTP2_STATUS_101#

在 HTTP/2 中禁止使用 101 資訊狀態碼。

ERR_HTTP2_STATUS_INVALID#

指定了無效的 HTTP 狀態碼。狀態碼必須是 100599(含)之間的整數。

ERR_HTTP2_STREAM_CANCEL#

在任何資料傳輸到已連線的對等方之前,一個 Http2Stream 被銷燬了。

ERR_HTTP2_STREAM_ERROR#

RST_STREAM 幀中指定了非零錯誤碼。

ERR_HTTP2_STREAM_SELF_DEPENDENCY#

在為 HTTP/2 流設定優先順序時,該流可以被標記為父流的依賴項。當試圖將一個流標記為自身的依賴項時,會使用此錯誤碼。

ERR_HTTP2_TOO_MANY_CUSTOM_SETTINGS#

支援的自定義設定數量(10)已超出。

ERR_HTTP2_TOO_MANY_INVALID_FRAMES#

對等方傳送的可接受的無效 HTTP/2 協議幀的數量限制(透過 maxSessionInvalidFrames 選項指定)已被超出。

ERR_HTTP2_TRAILERS_ALREADY_SENT#

拖尾標頭(Trailing headers)已在 Http2Stream 上傳送。

ERR_HTTP2_TRAILERS_NOT_READY#

Http2Stream 物件上觸發 'wantTrailers' 事件之後才能呼叫 http2stream.sendTrailers() 方法。只有當為 Http2Stream 設定了 waitForTrailers 選項時,才會觸發 'wantTrailers' 事件。

ERR_HTTP2_UNSUPPORTED_PROTOCOL#

http2.connect() 接收到一個使用除 http:https: 以外協議的 URL。

ERR_HTTP_BODY_NOT_ALLOWED#

當向不允許包含內容的 HTTP 響應中寫入時,會丟擲錯誤。

ERR_HTTP_CONTENT_LENGTH_MISMATCH#

響應體大小與指定的 content-length 標頭值不匹配。

ERR_HTTP_HEADERS_SENT#

嘗試在標頭已傳送後新增更多標頭。

ERR_HTTP_INVALID_HEADER_VALUE#

指定了無效的 HTTP 標頭值。

ERR_HTTP_INVALID_STATUS_CODE#

狀態碼超出了常規狀態碼範圍(100-999)。

ERR_HTTP_REQUEST_TIMEOUT#

客戶端未在允許的時間內傳送完整的請求。

ERR_HTTP_SOCKET_ASSIGNED#

給定的 ServerResponse 已被分配了一個套接字。

ERR_HTTP_SOCKET_ENCODING#

根據 RFC 7230 第 3 節,不允許更改套接字編碼。

ERR_HTTP_TRAILER_INVALID#

即使傳輸編碼不支援,也設定了 Trailer 標頭。

ERR_ILLEGAL_CONSTRUCTOR#

嘗試使用非公共建構函式來構造物件。

ERR_IMPORT_ATTRIBUTE_MISSING#

缺少匯入屬性,導致無法匯入指定的模組。

ERR_IMPORT_ATTRIBUTE_TYPE_INCOMPATIBLE#

提供了匯入 type 屬性,但指定的模組是不同型別。

ERR_IMPORT_ATTRIBUTE_UNSUPPORTED#

此版本的 Node.js 不支援某個匯入屬性。

ERR_INCOMPATIBLE_OPTION_PAIR#

一對選項互不相容,不能同時使用。

ERR_INPUT_TYPE_NOT_ALLOWED#

--input-type 標誌被用於嘗試執行一個檔案。此標誌只能與透過 --eval--printSTDIN 的輸入一起使用。

ERR_INSPECTOR_ALREADY_ACTIVATED#

在使用 node:inspector 模組時,嘗試在檢查器已經開始在某個埠上監聽時啟用它。在另一個地址上啟用它之前,請使用 inspector.close()

ERR_INSPECTOR_ALREADY_CONNECTED#

在使用 node:inspector 模組時,嘗試在檢查器已經連線時進行連線。

ERR_INSPECTOR_CLOSED#

在使用 node:inspector 模組時,嘗試在會話已關閉後使用檢查器。

ERR_INSPECTOR_COMMAND#

透過 node:inspector 模組發出命令時發生錯誤。

ERR_INSPECTOR_NOT_ACTIVE#

呼叫 inspector.waitForDebugger() 時,inspector 未啟用。

ERR_INSPECTOR_NOT_AVAILABLE#

node:inspector 模組不可用。

ERR_INSPECTOR_NOT_CONNECTED#

在使用 node:inspector 模組時,嘗試在檢查器連線前使用它。

ERR_INSPECTOR_NOT_WORKER#

在主執行緒上呼叫了只能在工作執行緒中使用的 API。

ERR_INTERNAL_ASSERTION#

Node.js 中存在一個 bug 或對 Node.js 內部函式的使用不正確。要修復此錯誤,請在 https://github.com/nodejs/node/issues 上提出一個問題。

ERR_INVALID_ADDRESS#

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

ERR_INVALID_ADDRESS_FAMILY#

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

ERR_INVALID_ARG_TYPE#

向 Node.js API 傳遞了型別錯誤的引數。

ERR_INVALID_ARG_VALUE#

為給定引數傳遞了無效或不支援的值。

ERR_INVALID_ASYNC_ID#

使用 AsyncHooks 傳遞了無效的 asyncIdtriggerAsyncId。小於 -1 的 ID 永遠不應該發生。

ERR_INVALID_BUFFER_SIZE#

Buffer 上執行了交換操作,但其大小與該操作不相容。

ERR_INVALID_CHAR#

在標頭中檢測到無效字元。

ERR_INVALID_CURSOR_POS#

在沒有指定列的情況下,無法將給定流上的游標移動到指定的行。

ERR_INVALID_FD#

檔案描述符('fd')無效(例如,它是一個負值)。

ERR_INVALID_FD_TYPE#

檔案描述符('fd')型別無效。

ERR_INVALID_FILE_URL_HOST#

一個使用 file: URL 的 Node.js API(例如 fs 模組中的某些函式)遇到了一個帶有不相容主機的 file URL。這種情況只可能在類 Unix 系統上發生,其中只支援 localhost 或空主機。

ERR_INVALID_FILE_URL_PATH#

一個使用 file: URL 的 Node.js API(例如 fs 模組中的某些函式)遇到了一個帶有不相容路徑的 file URL。確定路徑是否可用的確切語義取決於平臺。

丟擲的錯誤物件包含一個 input 屬性,其中包含無效 file: URL 的 URL 物件。

ERR_INVALID_HANDLE_TYPE#

嘗試透過 IPC 通訊通道向子程序傳送不受支援的“控制代碼”。更多資訊請參閱 subprocess.send()process.send()

ERR_INVALID_HTTP_TOKEN#

提供了一個無效的 HTTP 令牌。

ERR_INVALID_IP_ADDRESS#

IP 地址無效。

ERR_INVALID_MIME_SYNTAX#

MIME 的語法無效。

ERR_INVALID_MODULE#

嘗試載入一個不存在或其他方面無效的模組。

ERR_INVALID_MODULE_SPECIFIER#

匯入的模組字串是無效的 URL、包名或包子路徑說明符。

ERR_INVALID_OBJECT_DEFINE_PROPERTY#

在物件的屬性上設定無效屬性時發生錯誤。

ERR_INVALID_PACKAGE_CONFIG#

一個無效的 package.json 檔案解析失敗。

ERR_INVALID_PACKAGE_TARGET#

package.json"exports" 欄位為嘗試的模組解析包含了無效的目標對映值。

ERR_INVALID_PROTOCOL#

http.request() 傳遞了無效的 options.protocol

ERR_INVALID_REPL_EVAL_CONFIG#

REPL 配置中同時設定了 breakEvalOnSiginteval 選項,這是不支援的。

ERR_INVALID_REPL_INPUT#

輸入不能在 REPL 中使用。使用此錯誤的條件在 REPL 文件中有描述。

ERR_INVALID_RETURN_PROPERTY#

在函式選項執行時,未為其返回的物件屬性之一提供有效值時丟擲。

ERR_INVALID_RETURN_PROPERTY_VALUE#

在函式選項執行時,未為其返回的物件屬性之一提供預期的值型別時丟擲。

ERR_INVALID_RETURN_VALUE#

在函式選項執行時未返回預期的值型別時丟擲,例如當一個函式預期返回一個 promise 時。

ERR_INVALID_STATE#

表示由於狀態無效,操作無法完成。例如,一個物件可能已經被銷燬,或者正在執行另一個操作。

ERR_INVALID_SYNC_FORK_INPUT#

BufferTypedArrayDataViewstring 作為 stdio 輸入提供給了一個非同步的 fork。更多資訊請參閱 child_process 模組的文件。

ERR_INVALID_THIS#

使用不相容的 this 值呼叫了 Node.js API 函式。

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

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

ERR_INVALID_TUPLE#

提供給 WHATWG URLSearchParams 建構函式iterable 中的一個元素不代表 [name, value] 元組——也就是說,如果一個元素不可迭代,或者不恰好包含兩個元素。

ERR_INVALID_TYPESCRIPT_SYNTAX#

提供的 TypeScript 語法無效。

ERR_INVALID_URI#

傳遞了無效的 URI。

ERR_INVALID_URL#

WHATWG URL 建構函式 或舊版 url.parse() 傳遞了無效的 URL 進行解析。丟擲的錯誤物件通常有一個額外的屬性 'input',其中包含解析失敗的 URL。

ERR_INVALID_URL_PATTERN#

WHATWG URLPattern 建構函式 傳遞了無效的 URLPattern 進行解析。

ERR_INVALID_URL_SCHEME#

嘗試為特定目的使用不相容方案(協議)的 URL。它僅用於 fs 模組中的 WHATWG URL API 支援(它只接受帶有 'file' 方案的 URL),但將來也可能在其他 Node.js API 中使用。

ERR_IPC_CHANNEL_CLOSED#

嘗試使用已經關閉的 IPC 通訊通道。

ERR_IPC_DISCONNECTED#

嘗試斷開已經斷開的 IPC 通訊通道。更多資訊請參閱 child_process 模組的文件。

ERR_IPC_ONE_PIPE#

嘗試使用多於一個 IPC 通訊通道來建立子 Node.js 程序。更多資訊請參閱 child_process 模組的文件。

ERR_IPC_SYNC_FORK#

嘗試與同步分叉的 Node.js 程序開啟一個 IPC 通訊通道。更多資訊請參閱 child_process 模組的文件。

ERR_IP_BLOCKED#

IP 被 net.BlockList 阻止。

ERR_LOADER_CHAIN_INCOMPLETE#

ESM 載入器鉤子返回時沒有呼叫 next(),也沒有明確表示短路。

ERR_LOAD_SQLITE_EXTENSION#

載入 SQLite 擴充套件時發生錯誤。

ERR_MEMORY_ALLOCATION_FAILED#

嘗試分配記憶體(通常在 C++ 層)但失敗了。

ERR_MESSAGE_TARGET_CONTEXT_UNAVAILABLE#

釋出到 MessagePort 的訊息無法在目標 vm Context 中反序列化。目前並非所有 Node.js 物件都能在任何上下文中成功例項化,在這種情況下,嘗試使用 postMessage() 傳輸它們可能會在接收端失敗。

ERR_METHOD_NOT_IMPLEMENTED#

一個方法是必需的但未實現。

ERR_MISSING_ARGS#

Node.js API 的一個必需引數未被傳遞。這僅用於嚴格遵守 API 規範(在某些情況下可能接受 func(undefined) 但不接受 func())。在大多數原生 Node.js API 中,func(undefined)func() 被同等對待,並且可能會改用 ERR_INVALID_ARG_TYPE 錯誤程式碼。

ERR_MISSING_OPTION#

對於接受選項物件的 API,某些選項可能是強制性的。如果缺少必需的選項,則會丟擲此程式碼。

ERR_MISSING_PASSPHRASE#

嘗試讀取加密金鑰但未指定密碼短語。

ERR_MISSING_PLATFORM_FOR_WORKER#

此 Node.js 例項使用的 V8 平臺不支援建立 Worker。這是由於嵌入器對 Worker 的支援不足造成的。特別地,這個錯誤不會在 Node.js 的標準構建中發生。

ERR_MODULE_LINK_MISMATCH#

一個模組無法連結,因為其中的相同模組請求未解析為同一個模組。

ERR_MODULE_NOT_FOUND#

在嘗試 import 操作或載入程式入口點時,ECMAScript 模組載入器無法解析模組檔案。

ERR_MULTIPLE_CALLBACK#

一個回撥被多次呼叫。

一個回撥幾乎總是隻應被呼叫一次,因為查詢要麼被滿足要麼被拒絕,但不能同時兩者兼得。後者可以透過多次呼叫回撥來實現。

ERR_NAPI_CONS_FUNCTION#

在使用 Node-API 時,傳遞的建構函式不是一個函式。

ERR_NAPI_INVALID_DATAVIEW_ARGS#

在呼叫 napi_create_dataview() 時,給定的 offset 超出了資料檢視的邊界,或者 offset + length 大於給定 buffer 的長度。

ERR_NAPI_INVALID_TYPEDARRAY_ALIGNMENT#

在呼叫 napi_create_typedarray() 時,提供的 offset 不是元素大小的倍數。

ERR_NAPI_INVALID_TYPEDARRAY_LENGTH#

在呼叫 napi_create_typedarray() 時,(length * size_of_element) + byte_offset 大於給定 buffer 的長度。

ERR_NAPI_TSFN_CALL_JS#

在呼叫執行緒安全函式的 JavaScript 部分時發生錯誤。

ERR_NAPI_TSFN_GET_UNDEFINED#

在嘗試檢索 JavaScript 的 undefined 值時發生錯誤。

ERR_NON_CONTEXT_AWARE_DISABLED#

在一個不允許非上下文感知原生外掛的程序中載入了該外掛。

ERR_NOT_BUILDING_SNAPSHOT#

嘗試使用只能在構建 V8 啟動快照時使用的操作,儘管 Node.js 並未在構建快照。

ERR_NOT_IN_SINGLE_EXECUTABLE_APPLICATION#

當不在單可執行檔案應用程式中時,無法執行該操作。

ERR_NOT_SUPPORTED_IN_SNAPSHOT#

嘗試執行在構建啟動快照時不支援的操作。

ERR_NO_CRYPTO#

在 Node.js 未編譯 OpenSSL 加密支援的情況下,嘗試使用加密功能。

ERR_NO_ICU#

嘗試使用需要 ICU 的功能,但 Node.js 未編譯 ICU 支援。

ERR_NO_TYPESCRIPT#

嘗試使用需要原生 TypeScript 支援的功能,但 Node.js 未編譯 TypeScript 支援。

ERR_OPERATION_FAILED#

一個操作失敗了。這通常用於表示非同步操作的一般性失敗。

ERR_OPTIONS_BEFORE_BOOTSTRAPPING#

在引導完成之前嘗試獲取選項。

ERR_OUT_OF_RANGE#

給定的值超出了可接受的範圍。

ERR_PACKAGE_IMPORT_NOT_DEFINED#

package.json"imports" 欄位未定義給定的內部包說明符對映。

ERR_PACKAGE_PATH_NOT_EXPORTED#

package.json"exports" 欄位未匯出請求的子路徑。由於匯出是封裝的,未匯出的私有內部模組無法透過包解析匯入,除非使用絕對 URL。

ERR_PARSE_ARGS_INVALID_OPTION_VALUE#

strict 設定為 true 時,如果為型別為 <string> 的選項提供了 <boolean> 值,或者為型別為 <boolean> 的選項提供了 <string> 值,則由 util.parseArgs() 丟擲。

ERR_PARSE_ARGS_UNEXPECTED_POSITIONAL#

當提供了位置引數且 allowPositionals 設定為 false 時,由 util.parseArgs() 丟擲。

ERR_PARSE_ARGS_UNKNOWN_OPTION#

strict 設定為 true 時,如果一個引數未在 options 中配置,則由 util.parseArgs() 丟擲。

ERR_PERFORMANCE_INVALID_TIMESTAMP#

為效能標記或測量提供了無效的時間戳值。

ERR_PERFORMANCE_MEASURE_INVALID_OPTIONS#

為效能測量提供了無效的選項。

ERR_PROTO_ACCESS#

使用 --disable-proto=throw 禁止了對 Object.prototype.__proto__ 的訪問。應使用 Object.getPrototypeOfObject.setPrototypeOf 來獲取和設定物件的原型。

ERR_PROXY_INVALID_CONFIG#

由於代理配置無效,代理請求失敗。

ERR_PROXY_TUNNEL#

當啟用 NODE_USE_ENV_PROXY--use-env-proxy 時,建立代理隧道失敗。

ERR_QUIC_APPLICATION_ERROR#

穩定性:1 - 實驗性

發生了 QUIC 應用程式錯誤。

ERR_QUIC_CONNECTION_FAILED#

穩定性:1 - 實驗性

建立 QUIC 連線失敗。

ERR_QUIC_ENDPOINT_CLOSED#

穩定性:1 - 實驗性

QUIC 端點因錯誤而關閉。

ERR_QUIC_OPEN_STREAM_FAILED#

穩定性:1 - 實驗性

開啟 QUIC 流失敗。

ERR_QUIC_TRANSPORT_ERROR#

穩定性:1 - 實驗性

發生了 QUIC 傳輸錯誤。

ERR_QUIC_VERSION_NEGOTIATION_ERROR#

穩定性:1 - 實驗性

QUIC 會話失敗,因為需要版本協商。

ERR_REQUIRE_ASYNC_MODULE#

穩定性:1 - 實驗性

當嘗試 require() 一個 ES 模組時,發現該模組是非同步的。也就是說,它包含頂層 await。

要檢視頂層 await 的位置,請使用 --experimental-print-required-tla(這將在查詢頂層 await 之前執行模組)。

ERR_REQUIRE_CYCLE_MODULE#

穩定性:1 - 實驗性

當嘗試 require() 一個 ES 模組時,一個 CommonJS 到 ESM 或 ESM 到 CommonJS 的邊界參與了一個直接迴圈。這是不允許的,因為 ES 模組不能在已經被評估時再次評估。

為避免迴圈,迴圈中涉及的 require() 呼叫不應發生在 ES 模組(透過 createRequire())或 CommonJS 模組的頂層,而應在內部函式中惰性執行。

ERR_REQUIRE_ESM#

穩定性: 0 - 廢棄

嘗試 require() 一個 ES 模組

此錯誤已被棄用,因為 require() 現在支援載入同步 ES 模組。當 require() 遇到包含頂層 await 的 ES 模組時,它將丟擲 ERR_REQUIRE_ASYNC_MODULE

ERR_SCRIPT_EXECUTION_INTERRUPTED#

指令碼執行被 SIGINT 中斷(例如,按下了 Ctrl+C)。

ERR_SCRIPT_EXECUTION_TIMEOUT#

指令碼執行超時,可能是由於正在執行的指令碼中存在錯誤。

ERR_SERVER_ALREADY_LISTEN#

net.Server 已經處於監聽狀態時呼叫了 server.listen() 方法。這適用於所有 net.Server 例項,包括 HTTP、HTTPS 和 HTTP/2 Server 例項。

ERR_SERVER_NOT_RUNNING#

net.Server 未執行時呼叫了 server.close() 方法。這適用於所有 net.Server 例項,包括 HTTP、HTTPS 和 HTTP/2 Server 例項。

ERR_SINGLE_EXECUTABLE_APPLICATION_ASSET_NOT_FOUND#

向單可執行檔案應用程式 API 傳遞了一個用於識別資產的金鑰,但找不到匹配項。

ERR_SOCKET_ALREADY_BOUND#

嘗試繫結一個已經繫結的套接字。

ERR_SOCKET_BAD_BUFFER_SIZE#

dgram.createSocket() 中為 recvBufferSizesendBufferSize 選項傳遞了無效的(負數)大小。

ERR_SOCKET_BAD_PORT#

一個期望埠號 >= 0 且 < 65536 的 API 函式收到了一個無效值。

ERR_SOCKET_BAD_TYPE#

一個期望套接字型別(udp4udp6)的 API 函式收到了一個無效值。

ERR_SOCKET_BUFFER_SIZE#

在使用 dgram.createSocket() 時,無法確定接收或傳送 Buffer 的大小。

ERR_SOCKET_CLOSED#

嘗試在一個已經關閉的套接字上進行操作。

ERR_SOCKET_CLOSED_BEFORE_CONNECTION#

在連線中的套接字上呼叫 net.Socket.write() 時,套接字在連線建立前被關閉。

ERR_SOCKET_CONNECTION_TIMEOUT#

在使用系列自動選擇演算法時,套接字未能在允許的超時時間內連線到 DNS 返回的任何地址。

ERR_SOCKET_DGRAM_IS_CONNECTED#

在已連線的套接字上進行了 dgram.connect() 呼叫。

ERR_SOCKET_DGRAM_NOT_CONNECTED#

在未連線的套接字上進行了 dgram.disconnect()dgram.remoteAddress() 呼叫。

ERR_SOCKET_DGRAM_NOT_RUNNING#

進行了呼叫,但 UDP 子系統未在執行。

ERR_SOURCE_MAP_CORRUPT#

源對映無法解析,因為它不存在或已損壞。

ERR_SOURCE_MAP_MISSING_SOURCE#

未找到從源對映匯入的檔案。

ERR_SOURCE_PHASE_NOT_DEFINED#

提供的模組匯入沒有為源階段匯入語法 import source x from 'x'import.source(x) 提供源階段匯入表示。

ERR_SQLITE_ERROR#

SQLite 返回了一個錯誤。

ERR_SRI_PARSE#

為子資源完整性檢查提供了一個字串,但無法解析。透過檢視子資源完整性規範來檢查完整性屬性的格式。

ERR_STREAM_ALREADY_FINISHED#

呼叫了一個流方法,但該方法無法完成,因為流已經結束。

ERR_STREAM_CANNOT_PIPE#

嘗試在 Writable 流上呼叫 stream.pipe()

ERR_STREAM_DESTROYED#

呼叫了一個流方法,但該方法無法完成,因為流已透過 stream.destroy() 銷燬。

ERR_STREAM_NULL_VALUES#

嘗試使用 null 塊呼叫 stream.write()

ERR_STREAM_PREMATURE_CLOSE#

當流或管道非正常結束且沒有顯式錯誤時,由 stream.finished()stream.pipeline() 返回的錯誤。

ERR_STREAM_PUSH_AFTER_EOF#

在向流中推送了 null(EOF) 後,嘗試呼叫 stream.push()

ERR_STREAM_UNABLE_TO_PIPE#

嘗試管道連線到管道中一個已關閉或已銷燬的流。

ERR_STREAM_UNSHIFT_AFTER_END_EVENT#

在觸發 'end' 事件後,嘗試呼叫 stream.unshift()

ERR_STREAM_WRAP#

如果在 Socket 上設定了字串解碼器,或者解碼器處於 objectMode,則防止中止。

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

instance.setEncoding('utf8'); 

ERR_STREAM_WRITE_AFTER_END#

在呼叫 stream.end() 之後,嘗試呼叫 stream.write()

ERR_STRING_TOO_LONG#

嘗試建立一個長度超過最大允許長度的字串。

ERR_SYNTHETIC#

用於捕獲診斷報告呼叫堆疊的人為錯誤物件。

ERR_SYSTEM_ERROR#

Node.js 程序內部發生了未指定或非特定的系統錯誤。錯誤物件將有一個帶有附加詳細資訊的 err.info 物件屬性。

ERR_TEST_FAILURE#

此錯誤表示測試失敗。有關失敗的更多資訊可透過 cause 屬性獲得。failureType 屬性指定了失敗發生時測試正在做什麼。

ERR_TLS_ALPN_CALLBACK_INVALID_RESULT#

ALPNCallback 返回的值不在客戶端提供的 ALPN 協議列表中時,會丟擲此錯誤。

ERR_TLS_ALPN_CALLBACK_WITH_PROTOCOLS#

如果 TLS 選項同時包含 ALPNProtocolsALPNCallback,則在建立 TLSServer 時會丟擲此錯誤。這些選項是互斥的。

ERR_TLS_CERT_ALTNAME_FORMAT#

如果使用者提供的 subjectaltname 屬性違反了編碼規則,則 checkServerIdentity 會丟擲此錯誤。Node.js 本身生成的證書物件始終符合編碼規則,永遠不會導致此錯誤。

ERR_TLS_CERT_ALTNAME_INVALID#

在使用 TLS 時,對等方的主機名/IP 與其證書中的任何 subjectAltNames 都不匹配。

ERR_TLS_DH_PARAM_SIZE#

在使用 TLS 時,為 Diffie-Hellman (DH) 金鑰協商協議提供的引數太小。為避免漏洞,預設情況下金鑰長度必須大於或等於 1024 位,儘管強烈建議使用 2048 位或更大以獲得更強的安全性。

ERR_TLS_HANDSHAKE_TIMEOUT#

TLS/SSL 握手超時。在這種情況下,伺服器也必須中止連線。

ERR_TLS_INVALID_CONTEXT#

上下文必須是 SecureContext

ERR_TLS_INVALID_PROTOCOL_METHOD#

指定的 secureProtocol 方法無效。它要麼是未知的,要麼是因為不安全而被停用。

ERR_TLS_INVALID_PROTOCOL_VERSION#

有效的 TLS 協議版本是 'TLSv1''TLSv1.1''TLSv1.2'

ERR_TLS_INVALID_STATE#

TLS 套接字必須已連線並安全建立。在繼續之前,請確保 'secure' 事件已發出。

ERR_TLS_PROTOCOL_VERSION_CONFLICT#

嘗試設定 TLS 協議的 minVersionmaxVersion 與明確設定 secureProtocol 的嘗試相沖突。請使用其中一種機制。

ERR_TLS_PSK_SET_IDENTITY_HINT_FAILED#

設定 PSK 身份提示失敗。提示可能太長。

ERR_TLS_RENEGOTIATION_DISABLED#

嘗試在停用了重新協商的套接字例項上重新協商 TLS。

ERR_TLS_REQUIRED_SERVER_NAME#

在使用 TLS 時,呼叫了 server.addContext() 方法,但未在第一個引數中提供主機名。

ERR_TLS_SESSION_ATTACK#

檢測到過多的 TLS 重新協商,這是拒絕服務攻擊的潛在載體。

ERR_TLS_SNI_FROM_SERVER#

嘗試從 TLS 伺服器端套接字發出伺服器名稱指示(Server Name Indication),這僅對客戶端有效。

ERR_TRACE_EVENTS_CATEGORY_REQUIRED#

trace_events.createTracing() 方法至少需要一個跟蹤事件類別。

ERR_TRACE_EVENTS_UNAVAILABLE#

無法載入 node:trace_events 模組,因為 Node.js 是使用 --without-v8-platform 標誌編譯的。

ERR_TRAILING_JUNK_AFTER_STREAM_END#

在壓縮流結束後發現尾隨垃圾資料。當在壓縮流(例如,zlib 或 gzip 解壓縮)結束後檢測到額外、意外的資料時,會丟擲此錯誤。

ERR_TRANSFORM_ALREADY_TRANSFORMING#

一個 Transform 流在仍在轉換時完成了。

ERR_TRANSFORM_WITH_LENGTH_0#

一個 Transform 流完成時,寫入緩衝區中仍有資料。

ERR_TTY_INIT_FAILED#

由於系統錯誤,TTY 初始化失敗。

ERR_UNAVAILABLE_DURING_EXIT#

process.on('exit') 處理程式中呼叫了不應在 process.on('exit') 處理程式中呼叫的函式。

ERR_UNCAUGHT_EXCEPTION_CAPTURE_ALREADY_SET#

process.setUncaughtExceptionCaptureCallback() 被呼叫了兩次,而沒有先將回調重置為 null

此錯誤旨在防止意外覆蓋從其他模組註冊的回撥。

ERR_UNESCAPED_CHARACTERS#

收到了一個包含未跳脫字元的字串。

ERR_UNHANDLED_ERROR#

發生了一個未處理的錯誤(例如,當 EventEmitter 發出 'error' 事件但未註冊 'error' 處理程式時)。

ERR_UNKNOWN_BUILTIN_MODULE#

用於識別一種特定的內部 Node.js 錯誤,通常不應由使用者程式碼觸發。此錯誤的例項指向 Node.js 二進位制檔案本身的內部錯誤。

ERR_UNKNOWN_CREDENTIAL#

傳遞了一個不存在的 Unix 組或使用者識別符號。

ERR_UNKNOWN_ENCODING#

向 API 傳遞了無效或未知的編碼選項。

ERR_UNKNOWN_FILE_EXTENSION#

嘗試載入一個具有未知或不支援的副檔名的模組。

ERR_UNKNOWN_MODULE_FORMAT#

嘗試載入一個具有未知或不支援的格式的模組。

ERR_UNKNOWN_SIGNAL#

向期望有效訊號的 API(例如 subprocess.kill())傳遞了無效或未知的程序訊號。

ERR_UNSUPPORTED_DIR_IMPORT#

不支援 import 目錄 URL。請改為使用包名自引用一個包,並在 package.json 檔案的 "exports" 欄位中定義一個自定義子路徑

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

ERR_UNSUPPORTED_ESM_URL_SCHEME#

不支援使用除 filedata 之外的 URL 方案進行 import

ERR_UNSUPPORTED_NODE_MODULES_TYPE_STRIPPING#

不支援對 node_modules 目錄下的檔案進行型別剝離。

ERR_UNSUPPORTED_RESOLVE_REQUEST#

嘗試解析一個無效的模組引用者。當匯入或呼叫 import.meta.resolve() 時,如果出現以下情況,可能會發生此錯誤:

  • 從一個 URL 方案不是 file 的模組中匯入一個不是內建模組的裸說明符。
  • 從一個 URL 方案不是特殊方案的模組中匯入一個相對 URL
try {
  // Trying to import the package 'bare-specifier' from a `data:` URL module:
  await import('data:text/javascript,import "bare-specifier"');
} catch (e) {
  console.log(e.code); // ERR_UNSUPPORTED_RESOLVE_REQUEST
} 

ERR_UNSUPPORTED_TYPESCRIPT_SYNTAX#

提供的 TypeScript 語法不受支援。當使用需要型別剝離進行轉換的 TypeScript 語法時,可能會發生這種情況。

ERR_USE_AFTER_CLOSE#

嘗試使用已關閉的東西。

ERR_VALID_PERFORMANCE_ENTRY_TYPE#

在使用效能計時 API(perf_hooks)時,未找到有效的效能條目型別。

ERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING#

未指定動態匯入回撥。

ERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING_FLAG#

在沒有 --experimental-vm-modules 的情況下呼叫了動態匯入回撥。

ERR_VM_MODULE_ALREADY_LINKED#

嘗試連結的模組不符合連結條件,原因如下之一:

  • 它已經被連結 (linkingStatus'linked')
  • 它正在被連結 (linkingStatus'linking')
  • 此模組的連結失敗 (linkingStatus'errored')

ERR_VM_MODULE_CACHED_DATA_REJECTED#

傳遞給模組建構函式的 cachedData 選項無效。

ERR_VM_MODULE_CANNOT_CREATE_CACHED_DATA#

無法為已經評估過的模組建立快取資料。

ERR_VM_MODULE_DIFFERENT_CONTEXT#

連結器函式返回的模組來自與父模組不同的上下文。連結的模組必須共享相同的上下文。

ERR_VM_MODULE_LINK_FAILURE#

由於失敗,模組無法被連結。

ERR_VM_MODULE_NOT_MODULE#

連結 promise 的已兌現值不是一個 vm.Module 物件。

ERR_VM_MODULE_STATUS#

當前模組的狀態不允許此操作。錯誤的具體含義取決於具體的功能。

ERR_WASI_ALREADY_STARTED#

WASI 例項已經啟動。

ERR_WASI_NOT_STARTED#

WASI 例項尚未啟動。

ERR_WEBASSEMBLY_RESPONSE#

傳遞給 WebAssembly.compileStreamingWebAssembly.instantiateStreamingResponse 不是一個有效的 WebAssembly 響應。

ERR_WORKER_INIT_FAILED#

Worker 初始化失敗。

ERR_WORKER_INVALID_EXEC_ARGV#

傳遞給 Worker 建構函式的 execArgv 選項包含無效的標誌。

ERR_WORKER_MESSAGING_ERRORED#

穩定性:1.1 - 活躍開發

目標執行緒在處理透過 postMessageToThread() 傳送的訊息時丟擲了一個錯誤。

ERR_WORKER_MESSAGING_FAILED#

穩定性:1.1 - 活躍開發

postMessageToThread() 中請求的執行緒無效或沒有 workerMessage 監聽器。

ERR_WORKER_MESSAGING_SAME_THREAD#

穩定性:1.1 - 活躍開發

postMessageToThread() 中請求的執行緒 ID 是當前執行緒 ID。

ERR_WORKER_MESSAGING_TIMEOUT#

穩定性:1.1 - 活躍開發

透過 postMessageToThread() 傳送訊息超時。

ERR_WORKER_NOT_RUNNING#

操作失敗,因為 Worker 例項當前未在執行。

ERR_WORKER_OUT_OF_MEMORY#

Worker 例項因達到記憶體限制而終止。

ERR_WORKER_PATH#

工作執行緒主指令碼的路徑既不是絕對路徑,也不是以 ./../ 開頭的相對路徑。

ERR_WORKER_UNSERIALIZABLE_ERROR#

所有序列化來自工作執行緒的未捕獲異常的嘗試均告失敗。

ERR_WORKER_UNSUPPORTED_OPERATION#

請求的功能在工作執行緒中不受支援。

ERR_ZLIB_INITIALIZATION_FAILED#

由於配置不正確,建立 zlib 物件失敗。

ERR_ZSTD_INVALID_PARAM#

在構造 Zstd 流期間傳遞了無效的引數鍵。

HPE_CHUNK_EXTENSIONS_OVERFLOW#

為分塊擴充套件接收了太多資料。為了防止惡意或配置不當的客戶端,如果接收到的資料超過 16 KiB,則會發出一個帶有此程式碼的 Error

HPE_HEADER_OVERFLOW#

接收到的 HTTP 標頭資料過多。為了防止惡意或配置不當的客戶端,如果接收到的 HTTP 標頭資料超過 maxHeaderSize,HTTP 解析將中止,不會建立請求或響應物件,並會發出一個帶有此程式碼的 Error

HPE_UNEXPECTED_CONTENT_LENGTH#

伺服器同時傳送了 Content-Length 標頭和 Transfer-Encoding: chunked

Transfer-Encoding: chunked 允許伺服器為動態生成的內容維持一個 HTTP 持久連線。在這種情況下,不能使用 Content-Length HTTP 標頭。

請使用 Content-LengthTransfer-Encoding: chunked

MODULE_NOT_FOUND#

在嘗試 require() 操作或載入程式入口點時,CommonJS 模組載入器無法解析模組檔案。

舊版 Node.js 錯誤碼#

穩定性:0 - 已棄用。這些錯誤程式碼要麼不一致,要麼已被刪除。

ERR_CANNOT_TRANSFER_OBJECT#

傳遞給 postMessage() 的值包含一個不支援傳輸的物件。

ERR_CPU_USAGE#

無法處理來自 process.cpuUsage 的原生呼叫。

ERR_CRYPTO_HASH_DIGEST_NO_UTF16#

UTF-16 編碼與 hash.digest() 一起使用。雖然 hash.digest() 方法允許傳入 encoding 引數,使方法返回一個字串而不是 Buffer,但不支援 UTF-16 編碼(例如 ucsutf16le)。

ERR_CRYPTO_SCRYPT_INVALID_PARAMETER#

crypto.scrypt()crypto.scryptSync() 傳遞了不相容的選項組合。新版本的 Node.js 使用錯誤碼 ERR_INCOMPATIBLE_OPTION_PAIR,這與其他 API 一致。

ERR_FS_INVALID_SYMLINK_TYPE#

fs.symlink()fs.symlinkSync() 方法傳遞了無效的符號連結型別。

ERR_HTTP2_FRAME_ERROR#

當在 HTTP/2 會話上傳送單個幀時發生故障時使用。

ERR_HTTP2_HEADERS_OBJECT#

當需要 HTTP/2 標頭物件時使用。

ERR_HTTP2_HEADER_REQUIRED#

當 HTTP/2 訊息中缺少必需的標頭時使用。

ERR_HTTP2_INFO_HEADERS_AFTER_RESPOND#

HTTP/2 資訊頭必須呼叫 Http2Stream.prototype.respond() 方法之前傳送。

ERR_HTTP2_STREAM_CLOSED#

當在已關閉的 HTTP/2 流上執行操作時使用。

ERR_HTTP_INVALID_CHAR#

當在 HTTP 響應狀態訊息(原因短語)中發現無效字元時使用。

ERR_IMPORT_ASSERTION_TYPE_FAILED#

匯入斷言失敗,導致指定模組無法匯入。

ERR_IMPORT_ASSERTION_TYPE_MISSING#

缺少匯入斷言,導致指定模組無法匯入。

ERR_IMPORT_ASSERTION_TYPE_UNSUPPORTED#

此版本的 Node.js 不支援某個匯入屬性。

ERR_INDEX_OUT_OF_RANGE#

給定的索引超出了可接受的範圍(例如負偏移量)。

ERR_INVALID_OPT_VALUE#

在選項物件中傳入了無效或意外的值。

ERR_INVALID_OPT_VALUE_ENCODING#

傳入了無效或未知的檔案編碼。

ERR_INVALID_PERFORMANCE_MARK#

在使用效能計時 API (perf_hooks) 時,效能標記無效。

ERR_INVALID_TRANSFER_OBJECT#

postMessage() 傳遞了無效的傳輸物件。

ERR_MANIFEST_ASSERT_INTEGRITY#

試圖載入一個資源,但該資源與策略清單定義的完整性不匹配。有關更多資訊,請參閱策略清單的文件。

ERR_MANIFEST_DEPENDENCY_MISSING#

試圖載入一個資源,但該資源未在嘗試載入它的位置的依賴項列表中列出。有關更多資訊,請參閱策略清單的文件。

ERR_MANIFEST_INTEGRITY_MISMATCH#

試圖載入策略清單,但清單中某個資源有多個條目且彼此不匹配。更新清單條目使其匹配以解決此錯誤。有關更多資訊,請參閱策略清單的文件。

ERR_MANIFEST_INVALID_RESOURCE_FIELD#

策略清單資源中的某個欄位值無效。更新清單條目使其匹配以解決此錯誤。有關更多資訊,請參閱策略清單的文件。

ERR_MANIFEST_INVALID_SPECIFIER#

策略清單資源的某個依賴對映值無效。更新清單條目使其匹配以解決此錯誤。有關更多資訊,請參閱策略清單的文件。

ERR_MANIFEST_PARSE_POLICY#

試圖載入策略清單,但清單無法被解析。有關更多資訊,請參閱策略清單的文件。

ERR_MANIFEST_TDZ#

試圖從策略清單中讀取,但清單尚未初始化。這很可能是 Node.js 的一個 bug。

ERR_MANIFEST_UNKNOWN_ONERROR#

載入的策略清單為其“onerror”行為設定了一個未知的值。有關更多資訊,請參閱策略清單的文件。

ERR_MISSING_MESSAGE_PORT_IN_TRANSFER_LIST#

此錯誤程式碼在 Node.js v15.0.0 中已被 ERR_MISSING_TRANSFERABLE_IN_TRANSFER_LIST 替換,因為它已不再準確,因為現在也存在其他型別的可傳輸物件。

ERR_MISSING_TRANSFERABLE_IN_TRANSFER_LIST#

一個需要顯式列在 transferList 引數中的物件,出現在傳遞給 postMessage() 呼叫的物件中,但未在該呼叫的 transferList 中提供。通常,這是一個 MessagePort

在 v15.0.0 之前的 Node.js 版本中,此處使用的錯誤程式碼是 ERR_MISSING_MESSAGE_PORT_IN_TRANSFER_LIST。然而,可傳輸物件的型別集合已經擴充套件,覆蓋了比 MessagePort 更多的型別。

ERR_NAPI_CONS_PROTOTYPE_OBJECT#

Constructor.prototype 不是一個物件時,由 Node-API 使用。

ERR_NAPI_TSFN_START_IDLE_LOOP#

在主執行緒上,值會透過一個空閒迴圈從與執行緒安全函式關聯的佇列中移除。此錯誤表示嘗試啟動該迴圈時發生了錯誤。

ERR_NAPI_TSFN_STOP_IDLE_LOOP#

一旦佇列中沒有更多專案,空閒迴圈必須被暫停。此錯誤表示空閒迴圈未能停止。

ERR_NO_LONGER_SUPPORTED#

一個 Node.js API 以不支援的方式被呼叫,例如 Buffer.write(string, encoding, offset[, length])

ERR_OUTOFMEMORY#

通常用於標識某個操作導致了記憶體不足的情況。

ERR_PARSE_HISTORY_DATA#

node:repl 模組無法解析來自 REPL 歷史檔案的資料。

ERR_SOCKET_CANNOT_SEND#

無法在套接字上傳送資料。

ERR_STDERR_CLOSE#

試圖關閉 process.stderr 流。根據設計,Node.js 不允許使用者程式碼關閉 stdoutstderr 流。

ERR_STDOUT_CLOSE#

試圖關閉 process.stdout 流。根據設計,Node.js 不允許使用者程式碼關閉 stdoutstderr 流。

ERR_STREAM_READ_NOT_IMPLEMENTED#

當嘗試使用尚未實現 readable._read() 的可讀流時使用。

ERR_TAP_LEXER_ERROR#

一個表示詞法分析器狀態失敗的錯誤。

ERR_TAP_PARSER_ERROR#

一個表示解析器狀態失敗的錯誤。有關導致錯誤的標記的附加資訊可透過 cause 屬性獲得。

ERR_TAP_VALIDATION_ERROR#

此錯誤表示 TAP 驗證失敗。

ERR_TLS_RENEGOTIATION_FAILED#

當 TLS 重新協商請求以非特定方式失敗時使用。

ERR_TRANSFERRING_EXTERNALIZED_SHAREDARRAYBUFFER#

在序列化期間遇到了一個其記憶體不由 JavaScript 引擎或 Node.js 管理的 SharedArrayBuffer。這樣的 SharedArrayBuffer 無法被序列化。

這隻可能在原生外掛以“外部化”模式建立 SharedArrayBuffer,或將現有的 SharedArrayBuffer 置於外部化模式時發生。

ERR_UNKNOWN_STDIN_TYPE#

試圖使用未知的 stdin 檔案型別啟動 Node.js 程序。此錯誤通常表示 Node.js 自身的 bug,儘管使用者程式碼也可能觸發它。

ERR_UNKNOWN_STREAM_TYPE#

試圖使用未知的 stdoutstderr 檔案型別啟動 Node.js 程序。此錯誤通常表示 Node.js 自身的 bug,儘管使用者程式碼也可能觸發它。

ERR_V8BREAKITERATOR#

使用了 V8 BreakIterator API,但未安裝完整的 ICU 資料集。

ERR_VALUE_OUT_OF_RANGE#

當給定值超出可接受的範圍時使用。

ERR_VM_MODULE_LINKING_ERRORED#

連結器函式返回了一個連結失敗的模組。

ERR_VM_MODULE_NOT_LINKED#

模組必須在例項化之前成功連結。

ERR_WORKER_UNSUPPORTED_EXTENSION#

用於工作執行緒主指令碼的路徑名具有未知的副檔名。

ERR_ZLIB_BINDING_CLOSED#

當試圖使用一個已經關閉的 zlib 物件時使用。

OpenSSL 錯誤程式碼#

時間有效性錯誤#

CERT_NOT_YET_VALID#

證書尚未生效:notBefore 日期晚於當前時間。

CERT_HAS_EXPIRED#

證書已過期:notAfter 日期早於當前時間。

CRL_NOT_YET_VALID#

證書吊銷列表(CRL)的頒發日期在未來。

CRL_HAS_EXPIRED#

證書吊銷列表(CRL)已過期。

CERT_REVOKED#

證書已被吊銷;它在證書吊銷列表(CRL)上。

信任或證書鏈相關錯誤#

UNABLE_TO_GET_ISSUER_CERT#

無法找到所查證書的頒發者證書。這通常意味著受信任的證書列表不完整。

UNABLE_TO_GET_ISSUER_CERT_LOCALLY#

證書的頒發者未知。如果頒發者未包含在受信任的證書列表中,就會發生這種情況。

DEPTH_ZERO_SELF_SIGNED_CERT#

傳入的證書是自簽名的,並且在受信任的證書列表中找不到相同的證書。

SELF_SIGNED_CERT_IN_CHAIN#

證書的頒發者未知。如果頒發者未包含在受信任的證書列表中,就會發生這種情況。

CERT_CHAIN_TOO_LONG#

證書鏈長度超過了最大深度。

UNABLE_TO_GET_CRL#

無法找到證書引用的 CRL。

UNABLE_TO_VERIFY_LEAF_SIGNATURE#

無法驗證任何簽名,因為鏈中只包含一個證書且它不是自簽名的。

CERT_UNTRUSTED#

根證書頒發機構(CA)未被標記為對指定目的可信。

基本擴充套件錯誤#

INVALID_CA#

CA 證書無效。它要麼不是一個 CA,要麼其擴充套件與提供的目的不一致。

PATH_LENGTH_EXCEEDED#

已超出 basicConstraints 的 pathlength 引數。

名稱相關錯誤#

HOSTNAME_MISMATCH#

證書與提供的主機名不匹配。

用法和策略錯誤#

INVALID_PURPOSE#

提供的證書不能用於指定目的。

CERT_REJECTED#

根 CA 被標記為拒絕指定目的。

格式錯誤#

CERT_SIGNATURE_FAILURE#

證書籤名無效。

CRL_SIGNATURE_FAILURE#

證書吊銷列表(CRL)的簽名無效。

ERROR_IN_CERT_NOT_BEFORE_FIELD#

證書的 notBefore 欄位包含無效時間。

ERROR_IN_CERT_NOT_AFTER_FIELD#

證書的 notAfter 欄位包含無效時間。

ERROR_IN_CRL_LAST_UPDATE_FIELD#

CRL 的 lastUpdate 欄位包含無效時間。

ERROR_IN_CRL_NEXT_UPDATE_FIELD#

CRL 的 nextUpdate 欄位包含無效時間。

UNABLE_TO_DECRYPT_CERT_SIGNATURE#

無法解密證書籤名。這意味著無法確定實際的簽名值,而不是它與期望值不匹配,這僅對 RSA 金鑰有意義。

UNABLE_TO_DECRYPT_CRL_SIGNATURE#

無法解密證書吊銷列表(CRL)的簽名:這意味著無法確定實際的簽名值,而不是它與期望值不匹配。

UNABLE_TO_DECODE_ISSUER_PUBLIC_KEY#

無法讀取證書 SubjectPublicKeyInfo 中的公鑰。

其他 OpenSSL 錯誤#

OUT_OF_MEM#

嘗試分配記憶體時發生錯誤。這應該永遠不會發生。