Spec-Zone.ru › Node.js 14 LTS

Ошибки

Приложения, работающие в Node.js, обычно сталкиваются с четырьмя категориями ошибок:

  • Стандартные ошибки JavaScript, такие как <EvalError>, <SyntaxError>, <RangeError>, <ReferenceError>, <TypeError> и <URIError>.
  • Системные ошибки, вызванные ограничениями базовой операционной системы, такие как попытка открыть несуществующий файл или отправить данные по закрытому сокету.
  • Ошибки, заданные пользователем, которые вызываются кодом приложения.
  • AssertionError — это особый класс ошибок, которые могут возникнуть, когда Node.js обнаруживает исключительное нарушение логики, которое никогда не должно происходить. Обычно они генерируются модулем assert.

Все ошибки JavaScript и системные ошибки, генерируемые Node.js, наследуются от или являются экземплярами стандартного класса JavaScript <Error> и гарантированно предоставляют по крайней мере свойства, доступные в этом классе.

Распространение и перехват ошибок

Node.js поддерживает несколько механизмов для распространения и обработки ошибок, возникающих во время работы приложения. Способ, которым эти ошибки сообщаются и обрабатываются, полностью зависит от типа Error и стиля вызываемого API.

Все ошибки JavaScript обрабатываются как исключения, которые немедленно генерируют и выбрасывают ошибку, используя стандартный механизм JavaScript throw. Они обрабатываются с помощью конструкции try…catch, предоставляемой языком JavaScript.

// 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 вызовет исключение, которое должно быть обработано с помощью try…catch, в противном случае процесс Node.js немедленно завершится.

За исключением немногих случаев, синхронные API (любой блокирующий метод, не принимающий функцию callback, например, fs.readFileSync) будут использовать throw для отчёта об ошибках.

Ошибки, возникающие в рамках асинхронных API, могут быть сообщены несколькими способами:

  • Большинство асинхронных методов, принимающих функцию callback, примут объект Error, переданный в качестве первого аргумента этой функции. Если этот первый аргумент не является null и является экземпляром Error, значит произошла ошибка, которую необходимо обработать.
const fs = require('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('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);
  • Несколько, как правило, асинхронных методов в API Node.js могут по-прежнему использовать механизм throw для генерации исключений, которые необходимо обработать с помощью try…catch. Нет исчерпывающего списка таких методов; обратитесь к документации каждого метода, чтобы определить необходимый механизм обработки ошибок.

Использование механизма событий 'error' наиболее распространено для потоковых и основанных на обработчиках событий API, которые сами по себе представляют серию асинхронных операций со временем (в отличие от единственной операции, которая может пройти или завершиться неудачей).

Для всех EventEmitter объектов, если обработчик события 'error' не предоставлен, ошибка будет выброшена, заставив процесс Node.js сообщить об ошибке «неперехваченное исключение» и аварийно завершиться, если либо: модуль domain используется должным образом, либо обработчик зарегистрирован для события 'uncaughtException'.

const EventEmitter = require('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, так как они выброшены после того, как вызывающий код уже завершил выполнение.

Разработчики должны обратиться к документации для каждого метода, чтобы точно определить, как распространяются ошибки, генерируемые этими методами.

Обратные вызовы с ошибкой в первую очередь

Большинство асинхронных методов, предоставляемых ядром Node.js, следуют идиоматическому шаблону, известному как обратный вызов с ошибкой в первую очередь. В этом шаблоне функция обратного вызова передаётся методу в качестве аргумента. Когда операция завершается успешно или возникает ошибка, функция обратного вызова вызывается с объектом Error (если таковой имеется) в качестве первого аргумента. Если ошибка не возникла, первый аргумент будет передан как null.

const fs = require('fs');

function errorFirstCallback(err, data) {
  if (err) {
    console.error('There was an error', err);
    return;
  }
  console.log(data);
}

fs.readFile('/some/file/that/does-not-exist', errorFirstCallback);
fs.readFile('/some/file/that/does-exist', errorFirstCallback);

Механизм JavaScript try…catch нельзя использовать для перехвата ошибок, генерируемых асинхронными API. Распространённая ошибка для начинающих — это попытка использовать throw внутри обратного вызова с ошибкой в первую очередь:

// THIS WILL NOT WORK:
const fs = require('fs');

try {
  fs.readFile('/some/file/that/does-not-exist', (err, data) => {
    // Mistaken assumption: throwing here...
    if (err) {
      throw err;
    }
  });
} catch (err) {
  // This will not catch the throw!
  console.error(err);
}

Это не сработает, потому что функция обратного вызова, переданная fs.readFile(), вызывается асинхронно. К моменту вызова обратного вызова окружающий код, включая блок try…catch, уже завершит выполнение. Выбрасывание ошибки внутри обратного вызова в большинстве случаев может привести к аварийному завершению процесса Node.js. Если включены области доменов или обработчик был зарегистрирован с process.on('uncaughtException'), такие ошибки можно перехватить.

Класс: Error

Объект JavaScript <Error>, который не обозначает конкретных обстоятельств возникновения ошибки. Error объекты содержат «стек вызовов», описывающий точку в коде, в которой был создан Error, и могут содержать текстовое описание ошибки.

Все ошибки, генерируемые Node.js, включая все системные и JavaScript-ошибки, будут либо экземплярами класса, либо унаследуют от класса Error.

new Error(message)

  • message <строка>

Создаёт новый объект Error и устанавливает свойство error.message в переданное текстовое сообщение. Если в качестве message передаётся объект, то текстовое сообщение генерируется путём вызова message.toString(). Свойство error.stack будет представлять точку в коде, в которой был вызван new Error(). Стек вызовов зависит от API стека вызовов V8. Стек вызовов охватывает только либо (a) начало синхронного выполнения кода, либо (b) количество кадров, заданное свойством Error.stackTraceLimit, в зависимости от того, что меньше.

Error.captureStackTrace(targetObject[, constructorOpt])

  • targetObject <Объект>
  • constructorOpt <Функция>

Создаёт свойство .stack для объекта targetObject, которое при обращении возвращает строку, представляющую место в коде, где был вызван Error.captureStackTrace().

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

Первая строка стека вызовов будет иметь префикс ${myObject.name}: ${myObject.message}.

Необязательный аргумент constructorOpt принимает функцию. Если он указан, все кадры выше constructorOpt, включая constructorOpt, будут исключены из сгенерированного стека вызовов.

Аргумент constructorOpt полезен для скрытия от пользователя реализационных деталей генерации ошибок. Например:

function MyError() {
  Error.captureStackTrace(this, MyError);
}

// Without passing MyError to captureStackTrace, the MyError
// frame would show up in the .stack property. By passing
// the constructor, we omit that frame, and retain all frames below it.
new MyError().stack;

Error.stackTraceLimit

  • <число>

Свойство Error.stackTraceLimit указывает количество кадров стека вызовов, собираемых стеком вызовов (будь то сгенерированный new Error().stack или Error.captureStackTrace(obj)).

Значение по умолчанию — 10, но оно может быть установлено любым допустимым числовым значением JavaScript. Изменения повлияют на любой стек вызовов, полученный после изменения значения.

Если установлено значение, отличное от числа, или отрицательное число, стеки вызовов не будут собирать никакие кадры.

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)

Первая строка отформатирована как <error class name>: <error message>, и за ней следуют несколько кадров стека вызовов (каждая строка начинается с «at »). Каждый кадр описывает место вызова в коде, приведшее к генерации ошибки. V8 пытается отобразить имя каждой функции (по имени переменной, имени функции или имени метода объекта), но иногда не может найти подходящее имя. Если V8 не может определить имя функции, для этого кадра будет отображена только информация о расположении. В противном случае определённое имя функции будет отображено вместе с информацией о расположении в скобках.

Кадры генерируются только для JavaScript-функций. Например, если выполнение синхронно проходит через C++-дополнительную функцию, называемую cheetahify, которая сама вызывает 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, если кадр представляет вызов в пользовательской программе или её зависимостях.

Строка, представляющая стек вызовов, генерируется лениво, когда свойство error.stack обращается.

Количество кадров, захваченных стеком вызовов, ограничено меньшим из Error.stackTraceLimit или количества доступных кадров в текущем цикле событий.

Класс: AssertionError

  • Расширяет: <errors.Error>

Указывает на неудачу проверки. Для подробностей см. Class: assert.AssertionError.

Класс: RangeError

  • Расширяет: <errors.Error>

Указывает, что переданный аргумент не находится в наборе или диапазоне допустимых значений для функции; будь то числовой диапазон или набор вариантов для заданного параметра функции.

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

Node.js сгенерирует и бросит экземпляры RangeError немедленно в качестве формы проверки аргументов.

Класс: ReferenceError

  • Расширяет: <errors.Error>

Указывает, что осуществляется попытка доступа к переменной, которая не определена. Такие ошибки обычно указывают на опечатки в коде или иные ошибки в программе.

Хотя код клиента может генерировать и распространять эти ошибки, на практике это делает только V8.

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

Если приложение не генерирует и не выполняет код динамически, экземпляры ReferenceError указывают на ошибку в коде или его зависимостях.

Класс: SyntaxError

  • Расширяет: <errors.Error>

Указывает, что программа не является допустимым JavaScript-кодом. Эти ошибки могут быть сгенерированы и распространены только в результате оценки кода. Оценка кода может происходить в результате eval, Function, require, или vm. Эти ошибки почти всегда указывают на ошибку в программе.

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

Экземпляры SyntaxError не могут быть восстановлены в контексте, в котором они были созданы - они могут быть перехвачены только другими контекстами.

Класс: SystemError

  • Расширяет: <errors.Error>

Node.js генерирует системные ошибки, когда возникают исключения в его среде выполнения. Обычно это происходит, когда приложение нарушает ограничение операционной системы. Например, системная ошибка возникнет, если приложение попытается прочитать несуществующий файл.

  • address <строка> Если присутствует, адрес, к которому не удалось подключиться по сети
  • code <строка> Строковый код ошибки
  • dest <строка> Если присутствует, путь к файлу назначения при сообщении об ошибке файловой системы
  • errno <число> Номер ошибки, предоставленный системой
  • info <Объект> Если присутствует, дополнительные сведения об ошибке
  • message <строка> Читаемое человеком описание ошибки, предоставленное системой
  • path <строка> Если присутствует, путь к файлу при сообщении об ошибке файловой системы
  • port <число> Если присутствует, порт сетевого подключения, который недоступен
  • syscall <строка> Имя системного вызова, вызвавшего ошибку

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) man-страницу.

  • EACCES (Отказ в доступе): Попытка доступа к файлу запрещена правами доступа.

  • EADDRINUSE (Адрес уже используется): Попытка привязать сервер (net, http или https) к локальному адресу завершилась неудачей из-за того, что другой сервер на локальной системе уже занял этот адрес.

  • ECONNREFUSED (Подключение отклонено): Не удалось установить подключение, потому что целевой компьютер активно его отклонил. Обычно это происходит при попытке подключения к сервису, который неактивен на удалённом хосте.

  • ECONNRESET (Подключение прервано удалённой стороной): Подключение было принудительно закрыто удалённой стороной. Это обычно происходит из-за потери соединения на удалённом сокете из-за таймаута или перезагрузки. Часто встречается в модулях http и net.

  • EEXIST (Файл существует): Существующий файл был целью операции, которая требовала отсутствия файла.

  • EISDIR (Это каталог): Операция ожидала файл, но заданный путь — это каталог.

  • EMFILE (Превышено максимальное количество открытых файлов в системе): Достигнуто максимальное число разрешённых дескрипторов файлов в системе, и запросы на получение других дескрипторов не могут быть выполнены, пока не будет закрыт хотя бы один. Возникает при одновременном открытии большого количества файлов, особенно на системах (в частности, macOS), где ограничение на дескрипторы файлов для процессов низкое. Для исправления низкого лимита выполните ulimit -n 2048 в той же оболочке, в которой будет запущена программа Node.js.

  • 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('url').parse(() => { });
// Throws TypeError, since it expected a string.

Node.js будет генерировать и выбрасывать экземпляры TypeError немедленно в качестве проверки аргументов.

Исключения и ошибки

JavaScript-исключение — это значение, которое выбрасывается в результате недопустимой операции или как целевой объект оператора throw. Несмотря на то, что эти значения не обязаны быть экземплярами Error или классов, наследующих от Error, все исключения, выброшенные Node.js или движком JavaScript, будут экземплярами Error.

Некоторые исключения являются невосполнимыми на уровне JavaScript. Такие исключения всегда приводят к аварийному завершению процесса Node.js. Примеры включают проверки assert() или вызовы abort() на уровне C++.

Ошибки OpenSSL

Ошибки, возникающие в crypto или tls, относятся к классу Error, и помимо стандартных свойств .code и .message, могут иметь дополнительные свойства, специфичные для OpenSSL.

error.opensslErrorStack

Массив ошибок, которые могут дать контекст происхождения ошибки в библиотеке OpenSSL.

error.function

Функция OpenSSL, в которой возникла ошибка.

error.library

Библиотека OpenSSL, в которой возникла ошибка.

error.reason

Читаемое человеком описание причины ошибки.

Коды ошибок Node.js

ERR_AMBIGUOUS_ARGUMENT

Аргумент функции используется таким образом, что предполагает возможное неправильное понимание сигнатуры функции. Эта ошибка выбрасывается модулем assert при совпадении параметра message в assert.throws(block, message) с сообщением об ошибке, выброшенным block, поскольку такое использование предполагает, что пользователь считает message ожидаемым сообщением, а не сообщением, которое отобразит AssertionError, если block не выбросит ошибку.

ERR_ARG_NOT_ITERABLE

В Node.js API потребовался итерируемый аргумент (т. е. значение, работающее с циклами for...of), но он не был предоставлен.

ERR_ASSERTION

Особый тип ошибки, который может быть вызван всякий раз, когда Node.js обнаруживает исключительную логическую ошибку, которая никогда не должна происходить. Обычно такие ошибки генерирует модуль 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 обычно принимаются во всех ядрах API Node.js, где принимаются 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_CONSOLE_WRITABLE_STREAM

Console был создан без потока stdout, или у Console есть не-записываемый поток stdout или stderr.

ERR_CONSTRUCT_CALL_INVALID

Вызван конструктор класса, который не является вызываемым.

ERR_CONSTRUCT_CALL_REQUIRED

Конструктор класса был вызван без new.

ERR_CONTEXT_NOT_INITIALIZED

Переданный в API контекст vm еще не инициализирован. Это может произойти, когда при создании контекста возникает ошибка (и она перехватывается), например, при неудачном выделении памяти или достижении максимального размера стека вызовов при создании контекста.

ERR_CPU_USAGE

Не удалось обработать системный вызов из process.cpuUsage.

ERR_CRYPTO_CUSTOM_ENGINE_NOT_SUPPORTED

Запрашиваемый движок сертификатов клиента не поддерживается используемой версией OpenSSL.

ERR_CRYPTO_ECDH_INVALID_FORMAT

В качестве аргумента format методу crypto.ECDH() класса getPublicKey() был передан некорректный параметр.

ERR_CRYPTO_ECDH_INVALID_PUBLIC_KEY

В качестве аргумента key методу crypto.ECDH() класса computeSecret() был передан некорректный параметр. Это означает, что открытый ключ находится вне эллиптической кривой.

ERR_CRYPTO_ENGINE_UNKNOWN

В require('crypto').setEngine() был передан недопустимый идентификатор криптографического движка.

ERR_CRYPTO_FIPS_FORCED

Использовался аргумент командной строки --force-fips, но была попытка включить или выключить режим FIPS в модуле crypto.

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_INVALID_DIGEST

Указан недопустимый алгоритм криптографического дайджеста.

ERR_CRYPTO_INVALID_KEY_OBJECT_TYPE

Тип данного объекта криптографического ключа недопустим для выполняемой операции.

ERR_CRYPTO_INVALID_STATE

Метод криптографии был использован с объектом в недопустимом состоянии. Например, вызов cipher.getAuthTag() до вызова cipher.final().

ERR_CRYPTO_PBKDF2_ERROR

Алгоритм PBKDF2 завершился неудачно по неопределенным причинам. OpenSSL не предоставляет больше подробностей, и Node.js тоже.

ERR_CRYPTO_SCRYPT_INVALID_PARAMETER

Один или несколько параметров crypto.scrypt() или crypto.scryptSync() выходят за пределы допустимых значений.

ERR_CRYPTO_SCRYPT_NOT_SUPPORTED

Node.js был скомпилирован без поддержки scrypt. Невозможно с официальными двоичными файлами, но может произойти при пользовательских сборках, включая дистрибутивные сборки.

ERR_CRYPTO_SIGN_KEY_REQUIRED

Подпись key не была предоставлена методу sign.sign().

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_DIR_CLOSED

Директория fs.Dir была ранее закрыта.

ERR_DIR_CONCURRENT_OPERATION

Добавлен в: v14.3.0

Была предпринята попытка синхронного чтения или закрытия fs.Dir, в то время как выполняются асинхронные операции.

ERR_DNS_SET_SERVERS_FAILED

Не удалось установить сервер DNS.

ERR_DOMAIN_CALLBACK_NOT_AVAILABLE

Модуль domain был недоступен, так как не удалось установить необходимые обработчики ошибок, потому что process.setUncaughtExceptionCaptureCallback() был вызван ранее.

ERR_DOMAIN_CANNOT_SET_UNCAUGHT_EXCEPTION_CAPTURE

process.setUncaughtExceptionCaptureCallback() не смог быть вызван, так как модуль domain был загружен ранее.

Стек отслеживания расширен для включения момента загрузки модуля domain.

ERR_ENCODING_INVALID_ENCODED_DATA

Предоставленные данные для API TextDecoder() были некорректны для указанного кодирования.

ERR_ENCODING_NOT_SUPPORTED

Предоставленное кодирование для API TextDecoder() не является одним из поддерживаемых 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

Promise, которая была callbackified через util.callbackify(), была отклонена с ложным значением.

ERR_FEATURE_UNAVAILABLE_ON_PLATFORM

Добавлен в: v14.0.0

Используется, когда используется функция, недоступная для текущей платформы, на которой работает Node.js.

ERR_FS_EISDIR

Путь является каталогом.

ERR_FS_FILE_TOO_LARGE

Была предпринята попытка чтения файла, размер которого превышает максимальный разрешенный размер для Buffer.

ERR_FS_INVALID_SYMLINK_TYPE

Неверный тип символической ссылки был передан методам fs.symlink() или fs.symlinkSync().

ERR_HTTP_HEADERS_SENT

Была предпринята попытка добавить дополнительные заголовки после того, как заголовки уже были отправлены.

ERR_HTTP_INVALID_HEADER_VALUE

Было указано неверное значение заголовка HTTP.

ERR_HTTP_INVALID_STATUS_CODE

Код состояния находился вне диапазона стандартных кодов состояния (100-999).

ERR_HTTP_TRAILER_INVALID

Заголовок Trailer был задан, хотя кодировка передачи не поддерживает его.

ERR_HTTP2_ALTSVC_INVALID_ORIGIN

Кадры HTTP/2 ALTSVC требуют валидного источника.

ERR_HTTP2_ALTSVC_LENGTH

Кадры HTTP/2 ALTSVC ограничены максимальным размером полезной нагрузки в 16 382 байта.

ERR_HTTP2_CONNECT_AUTHORITY

Для запросов HTTP/2, использующих метод CONNECT, требуется псевдозаголовок :authority.

ERR_HTTP2_CONNECT_PATH

Для запросов HTTP/2, использующих метод CONNECT, псевдозаголовок :path запрещён.

ERR_HTTP2_CONNECT_SCHEME

Для запросов HTTP/2, использующих метод CONNECT, псевдозаголовок :scheme запрещён.

ERR_HTTP2_ERROR

Произошла неопределённая ошибка HTTP/2.

ERR_HTTP2_GOAWAY_SESSION

Новые потоки HTTP/2 не могут быть открыты после того, как Http2Session получило кадр GOAWAY от соединённого узла.

ERR_HTTP2_HEADER_SINGLE_VALUE

Были предоставлены несколько значений для поля заголовка HTTP/2, которое должно было иметь только одно значение.

ERR_HTTP2_HEADERS_AFTER_RESPOND

Были указаны дополнительные заголовки после инициализации ответа HTTP/2.

ERR_HTTP2_HEADERS_SENT

Была предпринята попытка отправить несколько заголовков ответа.

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. Информационные коды состояния должны быть целыми числами от 100 до 199 (включительно).

ERR_HTTP2_INVALID_ORIGIN

Кадры HTTP/2 ORIGIN требуют валидного источника.

ERR_HTTP2_INVALID_PACKED_SETTINGS_LENGTH

Входные экземпляры Buffer и Uint8Array, переданные в API http2.getUnpackedSettings(), должны иметь длину, кратную шести.

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

Была предпринята попытка инициировать новый поток push изнутри потока push. Вложенные потоки push запрещены.

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

Полезная нагрузка ping HTTP/2 должна иметь ровно 8 байт.

ERR_HTTP2_PSEUDOHEADER_NOT_ALLOWED

Псевдозаголовок HTTP/2 был использован неправильно. Псевдозаголовки — это имена ключей заголовков, начинающиеся с префикса :.

ERR_HTTP2_PUSH_DISABLED

Была предпринята попытка создания потока push, который был отключён клиентом.

ERR_HTTP2_SEND_FILE

Была предпринята попытка использования API Http2Stream.prototype.responseWithFile() для отправки каталога.

ERR_HTTP2_SEND_FILE_NOSEEK

Была предпринята попытка использования API Http2Stream.prototype.responseWithFile() для отправки чего-либо кроме обычного файла, но были указаны параметры offset или length.

ERR_HTTP2_SESSION_ERROR

Http2Session был закрыт с кодом ошибки, отличным от нуля.

ERR_HTTP2_SETTINGS_CANCEL

Были отменены настройки Http2Session.

ERR_HTTP2_SOCKET_BOUND

Была предпринята попытка подключить объект Http2Session к объекту net.Socket или tls.TLSSocket, который уже был привязан к другому объекту Http2Session.

ERR_HTTP2_SOCKET_UNBOUND

Была предпринята попытка использовать свойство socket объекта Http2Session, который уже был закрыт.

ERR_HTTP2_STATUS_101

Использование информационного кода состояния 101 запрещено в HTTP/2.

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_TRAILERS_ALREADY_SENT

Заголовки-прицепы уже были отправлены в Http2Stream.

ERR_HTTP2_TRAILERS_NOT_READY

Метод http2stream.sendTrailers() нельзя вызвать до тех пор, пока событие 'wantTrailers' не будет выпущено объектом Http2Stream. Событие 'wantTrailers' будет выпущено только в том случае, если параметр waitForTrailers установлен для Http2Stream.

ERR_HTTP2_UNSUPPORTED_PROTOCOL

http2.connect() получил URL, использующий протокол, отличный от http: или https:.

ERR_INCOMPATIBLE_OPTION_PAIR

Пара опций несовместима друг с другом и не может быть использована одновременно.

ERR_INPUT_TYPE_NOT_ALLOWED

Стабильность: 1 - Экспериментальная

Флаг --input-type был использован для попытки выполнения файла. Этот флаг может быть использован только с вводом через --eval, --print или STDIN.

ERR_INSPECTOR_ALREADY_ACTIVATED

При использовании модуля inspector была предпринята попытка активировать инспектор, когда он уже начал прослушивать порт. Используйте inspector.close() перед активацией на другом адресе.

ERR_INSPECTOR_ALREADY_CONNECTED

При использовании модуля inspector была предпринята попытка подключения, когда инспектор уже был подключён.

ERR_INSPECTOR_CLOSED

При использовании модуля inspector была предпринята попытка использовать инспектор после закрытия сессии.

ERR_INSPECTOR_COMMAND

Произошла ошибка при выполнении команды через модуль inspector.

ERR_INSPECTOR_NOT_ACTIVE

inspector не активен при вызове inspector.waitForDebugger().

ERR_INSPECTOR_NOT_AVAILABLE

Модуль inspector недоступен для использования.

ERR_INSPECTOR_NOT_CONNECTED

При использовании модуля inspector была предпринята попытка использования инспектора до его подключения.

ERR_INSPECTOR_NOT_WORKER

API был вызван в основном потоке, который может быть использован только из потока работника.

ERR_INTERNAL_ASSERTION

В Node.js произошла ошибка или неправильно использовались внутренние механизмы Node.js. Для исправления ошибки откройте вопрос на https://github.com/nodejs/node/issues.

ERR_INVALID_ADDRESS_FAMILY

Предоставленная семейство адресов не распознаётся API Node.js.

ERR_INVALID_ARG_TYPE

В API Node.js был передан аргумент неверного типа.

ERR_INVALID_ARG_VALUE

Для данного аргумента было передано недопустимое или неподдерживаемое значение.

ERR_INVALID_ASYNC_ID

Было передано недопустимое asyncId или triggerAsyncId с использованием AsyncHooks. Значение id, меньшее -1, недопустимо.

ERR_INVALID_BUFFER_SIZE

Была выполнена перестановка на Buffer, но её размер несовместим с операцией.

ERR_INVALID_CALLBACK

Требовалась функция обратного вызова, но она не была предоставлена API Node.js.

ERR_INVALID_CHAR

В заголовках были обнаружены недопустимые символы.

ERR_INVALID_CURSOR_POS

Курсор на заданном потоке не может быть перемещен на указанную строку без указанного столбца.

ERR_INVALID_FD

Дескриптор файла ('fd') не является допустимым (например, имеет отрицательное значение).

ERR_INVALID_FD_TYPE

Тип дескриптора файла ('fd') не является допустимым.

ERR_INVALID_FILE_URL_HOST

API Node.js, использующий file: URL (например, некоторые функции в модуле fs), столкнулся с URL файла с несовместимым хостом. Эта ситуация может возникнуть только на системах Unix-подобных, где поддерживается только localhost или пустой хост.

ERR_INVALID_FILE_URL_PATH

API Node.js, использующий file: URL (например, некоторые функции в модуле fs), столкнулся с URL файла с несовместимым путем. Точные правила определения допустимости пути зависят от платформы.

ERR_INVALID_HANDLE_TYPE

Была предпринята попытка отправить неподдерживаемое «обработка» через канал IPC в дочерний процесс. Для получения дополнительной информации см. subprocess.send() и process.send().

ERR_INVALID_HTTP_TOKEN

Предоставлен недопустимый HTTP-токен.

ERR_INVALID_IP_ADDRESS

IP-адрес не является допустимым.

ERR_INVALID_MODULE_SPECIFIER

Строка импортируемого модуля — это недопустимый URL, имя пакета или путь к подпапке пакета.

ERR_INVALID_OPT_VALUE

В объекте параметров было передано недопустимое или неожиданное значение.

ERR_INVALID_OPT_VALUE_ENCODING

Была передана недопустимая или неизвестная кодировка файла.

ERR_INVALID_PACKAGE_CONFIG

Найден недопустимый файл package.json, который не удалось обработать.

ERR_INVALID_PACKAGE_TARGET

Поле package.json "exports" содержит недопустимое целевое отображение для попытки разрешения модуля.

ERR_INVALID_PERFORMANCE_MARK

При использовании API отслеживания производительности (perf_hooks) метка производительности недопустима.

ERR_INVALID_PROTOCOL

В http.request() был передан недопустимый options.protocol.

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

Выбрасывается в случае, если опция функции не возвращает ожидаемый тип значения при выполнении, например, когда функция должна возвращать промис.

ERR_INVALID_SYNC_FORK_INPUT

В качестве ввода stdio для асинхронного вызова fork был передан Buffer, TypedArray, DataView или string. Дополнительную информацию см. в документации модуля child_process.

ERR_INVALID_THIS

Функция API Node.js была вызвана с недопустимым значением this.

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_TRANSFER_OBJECT

В postMessage() был передан недопустимый объект передачи.

ERR_INVALID_TUPLE

Элемент в iterable, предоставленный конструктору WHATWG URLSearchParams, не представлял собой кортеж [name, value] — то есть, если элемент не является итерируемым или не состоит ровно из двух элементов.

ERR_INVALID_URI

Передан недопустимый URI.

ERR_INVALID_URL

В конструктор WHATWG URL для разбора был передан недопустимый URL. В объекте ошибки, обычно, есть дополнительное свойство 'input', содержащее URL, который не удалось разобрать.

ERR_INVALID_URL_SCHEME

Была предпринята попытка использовать URL несовместимой схемы (протокола) для определенной цели. Он используется только в поддержке WHATWG URL API в модуле fs (который принимает только URL со схемой 'file'), но в будущем может использоваться и в других API Node.js.

ERR_IPC_CHANNEL_CLOSED

Была предпринята попытка использовать канал IPC, который уже был закрыт.

ERR_IPC_DISCONNECTED

Была предпринята попытка отключить канал IPC, который уже был отключен. Дополнительную информацию см. в документации модуля child_process.

ERR_IPC_ONE_PIPE

Была предпринята попытка создать дочерний процесс Node.js с использованием более одного канала IPC. Дополнительную информацию см. в документации модуля child_process.

ERR_IPC_SYNC_FORK

Была предпринята попытка открыть канал IPC с синхронно разветвлённым процессом Node.js. Дополнительную информацию см. в документации модуля child_process.

ERR_MANIFEST_ASSERT_INTEGRITY

Была предпринята попытка загрузить ресурс, но ресурс не соответствовал целостности, определённой в манифесте политики. Для получения дополнительной информации см. документацию по манифестам политики.

ERR_MANIFEST_DEPENDENCY_MISSING

Была предпринята попытка загрузить ресурс, но ресурс не был указан как зависимость в месте, где пытались его загрузить. Для получения дополнительной информации см. документацию по манифестам политики.

ERR_MANIFEST_INTEGRITY_MISMATCH

Была предпринята попытка загрузить манифест политики, но в манифесте было несколько записей для ресурса, которые не соответствовали друг другу. Обновите записи в манифесте, чтобы устранить эту ошибку. Для получения дополнительной информации см. документацию по манифестам политики.

ERR_MANIFEST_INVALID_RESOURCE_FIELD

В ресурсе манифеста политики было недопустимое значение для одного из его полей. Обновите запись манифеста, чтобы устранить эту ошибку. Для получения дополнительной информации см. документацию по манифестам политики.

ERR_MANIFEST_PARSE_POLICY

Была предпринята попытка загрузить манифест политики, но манифест не удалось обработать. Для получения дополнительной информации см. документацию по манифестам политики.

ERR_MANIFEST_TDZ

Была предпринята попытка чтения из манифеста политики, но инициализация манифеста ещё не произошла. Вероятно, это ошибка в Node.js.

ERR_MANIFEST_UNKNOWN_ONERROR

Манифест политики был загружен, но у него было неизвестное значение для поведения «onerror». Для получения дополнительной информации см. документацию по манифестам политики.

ERR_MEMORY_ALLOCATION_FAILED

Была предпринята попытка выделить память (обычно на уровне C++), но она не удалась.

ERR_MESSAGE_TARGET_CONTEXT_UNAVAILABLE

Добавлен в: v14.5.0

Сообщение, отправленное в MessagePort, не удалось десериализовать в целевом vm Context. В настоящий момент не все объекты Node.js могут быть успешно инициализированы в любом контексте, и попытка их передачи с использованием postMessage() может завершиться неудачей на стороне получателя в этом случае.

ERR_METHOD_NOT_IMPLEMENTED

Необходим метод, но он не реализован.

ERR_MISSING_ARGS

Не был передан обязательный аргумент API Node.js. Это используется только для строгого соответствия спецификации API (в некоторых случаях могут быть приняты func(undefined), но не func()). В большинстве собственных API Node.js func(undefined) и func() обрабатываются одинаково, и вместо этого может использоваться код ошибки ERR_INVALID_ARG_TYPE.

ERR_MISSING_MESSAGE_PORT_IN_TRANSFER_LIST

Объект, который нужно явно указать в аргументе transferList, находится в объекте, переданном в вызов postMessage(), но не указан в transferList для этого вызова. Обычно это MessagePort.

ERR_MISSING_OPTION

Для API, принимающих объекты опций, некоторые опции могут быть обязательными. Этот код выбрасывается, если отсутствует необходимая опция.

ERR_MISSING_PASSPHRASE

Была предпринята попытка прочитать зашифрованный ключ без указания парольной фразы.

ERR_MISSING_PLATFORM_FOR_WORKER

Платформа V8, используемая этой инстанцией Node.js, не поддерживает создание Workers. Это вызвано отсутствием поддержки embedder для Workers. В частности, эта ошибка не будет возникать при стандартных сборках Node.js.

ERR_MODULE_NOT_FOUND

Устойчивость: 1 - Экспериментальная

Не удалось разрешить модуль ES.

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_NAPI_TSFN_START_IDLE_LOOP

В основном потоке значения удаляются из очереди, связанной с потокобезопасной функцией, в цикле обработки неактивных событий. Эта ошибка указывает на то, что произошла ошибка при попытке запуска цикла.

ERR_NAPI_TSFN_STOP_IDLE_LOOP

После того, как в очереди больше нет элементов, цикл обработки неактивных событий должен быть приостановлен. Эта ошибка указывает на то, что цикл обработки неактивных событий не смог остановиться.

ERR_NO_CRYPTO

Была предпринята попытка использовать функции криптографии, в то время как Node.js не был скомпилирован с поддержкой криптографии OpenSSL.

ERR_NO_ICU

Была предпринята попытка использовать функции, требующие ICU, но Node.js не был скомпилирован с поддержкой ICU.

ERR_NON_CONTEXT_AWARE_DISABLED

Была загружена нативная добавка, не учитывающая контекст, в процессе, который запрещает их использование.

ERR_OPERATION_FAILED

Операция завершилась неудачей. Обычно это используется для сигнализации об общем сбое асинхронной операции.

ERR_OUT_OF_RANGE

Указанное значение находится вне допустимого диапазона.

ERR_PACKAGE_IMPORT_NOT_DEFINED

Поле package.json "imports" не определяет отображение указанного внутреннего спецификатора пакета.

ERR_PACKAGE_PATH_NOT_EXPORTED

Поле package.json "exports" не экспортирует запрошенный подпуть. Поскольку экспорты инкапсулированы, к внутренним закрытым модулям, которые не экспортируются, нельзя получить доступ посредством импорта через путь пакета, если не используется абсолютный URL.

ERR_PROTO_ACCESS

Доступ к Object.prototype.__proto__ был запрещен с помощью --disable-proto=throw. Следует использовать Object.getPrototypeOf и Object.setPrototypeOf для получения и установки прототипа объекта.

ERR_REQUIRE_ESM

Устойчивость: 1 - Экспериментальная

Была предпринята попытка require() модуля ES.

ERR_SCRIPT_EXECUTION_INTERRUPTED

Выполнение скрипта было прервано SIGINT (например, была нажата комбинация клавиш Ctrl+C).

ERR_SCRIPT_EXECUTION_TIMEOUT

Выполнение скрипта истекло по времени, возможно, из-за ошибок в выполняемом скрипте.

ERR_SERVER_ALREADY_LISTEN

Метод server.listen() был вызван, в то время как net.Server уже прослушивал. Это относится ко всем экземплярам net.Server, включая HTTP, HTTPS и HTTP/2 Server экземпляры.

ERR_SERVER_NOT_RUNNING

Метод server.close() был вызван, когда net.Server не работал. Это относится ко всем экземплярам net.Server, включая HTTP, HTTPS и HTTP/2 Server экземпляры.

ERR_SOCKET_ALREADY_BOUND

Была предпринята попытка привязать сокет, который уже был привязан.

ERR_SOCKET_BAD_BUFFER_SIZE

Недопустимый (отрицательный) размер был передан для опций recvBufferSize или sendBufferSize в dgram.createSocket().

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_DGRAM_IS_CONNECTED

Вызов dgram.connect() был сделан для уже подключенного сокета.

ERR_SOCKET_DGRAM_NOT_CONNECTED

Вызов dgram.disconnect() или dgram.remoteAddress() был сделан для отключенного сокета.

ERR_SOCKET_DGRAM_NOT_RUNNING

Вызов был сделан, и подсистема UDP не работала.

ERR_SRI_PARSE

Для проверки целостности подресурса было предоставлено строковое значение, но оно не удалось. Проверьте формат атрибутов integrity, обратившись к спецификации Subresource Integrity.

ERR_STREAM_ALREADY_FINISHED

Метод потока был вызван, но не может быть завершён, так как поток завершен.

ERR_STREAM_CANNOT_PIPE

Была предпринята попытка вызвать stream.pipe() для потока Writable.

ERR_STREAM_DESTROYED

Метод потока был вызван, но не может быть завершён, так как поток был разрушен с использованием stream.destroy().

ERR_STREAM_NULL_VALUES

Была предпринята попытка вызвать stream.write() с пустым фрагментом null.

ERR_STREAM_PREMATURE_CLOSE

Возвращаемая ошибка stream.finished() и stream.pipeline(), когда поток или цепочка завершаются некорректно без явной ошибки.

ERR_STREAM_PUSH_AFTER_EOF

Была предпринята попытка вызвать stream.push() после того, как null (EOF) был добавлен в поток.

ERR_STREAM_UNSHIFT_AFTER_END_EVENT

Была предпринята попытка вызвать stream.unshift() после того, как было отправлено событие 'end'.

ERR_STREAM_WRAP

Предотвращает прерывание, если декодер строк был задан для сокета или если декодер находится в objectMode.

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

instance.setEncoding('utf8');

ERR_STREAM_WRITE_AFTER_END

Была предпринята попытка вызвать stream.write() после вызова stream.end().

ERR_STRING_TOO_LONG

Была предпринята попытка создать строку, длина которой превышает максимально допустимую.

ERR_SYNTHETIC

Искусственный объект ошибки, используемый для захвата стека вызовов для отчётов об ошибках.

ERR_SYSTEM_ERROR

Произошла неопределённая или неспецифичная системная ошибка внутри процесса Node.js. У объекта ошибки будет свойство err.info с дополнительными подробностями.

ERR_TLS_CERT_ALTNAME_INVALID

При использовании TLS имя хоста/IP-адрес узла не совпал ни с одним из subjectAltNames в его сертификате.

ERR_TLS_DH_PARAM_SIZE

При использовании TLS предоставленный параметр для протокола обмена ключами Diffie-Hellman (DH) слишком мал. По умолчанию длина ключа должна быть не меньше 1024 бит, чтобы избежать уязвимостей, хотя настоятельно рекомендуется использовать 2048 бит или больше для большей безопасности.

ERR_TLS_HANDSHAKE_TIMEOUT

Таймаут рукопожатия TLS/SSL. В этом случае сервер также должен прервать соединение.

ERR_TLS_INVALID_CONTEXT

Добавлен в: v13.3.0

Контекст должен быть SecureContext.

ERR_TLS_INVALID_PROTOCOL_METHOD

Указанный secureProtocol метод недопустим. Он либо неизвестен, либо отключён из-за небезопасности.

ERR_TLS_INVALID_PROTOCOL_VERSION

Допустимые версии протокола TLS — 'TLSv1', 'TLSv1.1', или 'TLSv1.2'.

ERR_TLS_INVALID_STATE

Добавлен в: v13.10.0, v12.17.0

Сокет TLS должен быть подключён и надёжно установлен. Убедитесь, что событие 'secure' было излучено, прежде чем продолжать.

ERR_TLS_PROTOCOL_VERSION_CONFLICT

Попытка установить протокол TLS minVersion или maxVersion конфликтует с попыткой явно установить secureProtocol . Используйте один из механизмов.

ERR_TLS_PSK_SET_IDENTIY_HINT_FAILED

Не удалось установить подсказку идентичности PSK. Подсказка может быть слишком длинной.

ERR_TLS_RENEGOTIATION_DISABLED

Была предпринята попытка повторного согласования TLS в экземпляре сокета с отключённым TLS.

ERR_TLS_REQUIRED_SERVER_NAME

При использовании TLS метод server.addContext() был вызван без указания имени хоста в первом параметре.

ERR_TLS_SESSION_ATTACK

Обнаружено чрезмерное количество повторных согласований TLS, что представляет собой потенциальный вектор атаки типа отказа в обслуживании.

ERR_TLS_SNI_FROM_SERVER

Была предпринята попытка выдать Server Name Indication (SNI) с серверного сокета TLS, что допустимо только со стороны клиента.

ERR_TRACE_EVENTS_CATEGORY_REQUIRED

Метод trace_events.createTracing() требует по крайней мере одной категории событий отслеживания.

ERR_TRACE_EVENTS_UNAVAILABLE

Модуль trace_events не удалось загрузить, так как Node.js был скомпилирован с флагом --without-v8-platform.

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

Произошла необработанная ошибка (например, когда событие 'error' излучается EventEmitter, но обработчик '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 импорт каталога не поддерживается. Вместо этого, обращайтесь к пакету по имени и определяйте пользовательский подпуть в поле "exports" файла package.json.

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

ERR_UNSUPPORTED_ESM_URL_SCHEME

import с URL-схемами, отличными от file и data не поддерживаются.

ERR_VALID_PERFORMANCE_ENTRY_TYPE

При использовании API Performance Timing (perf_hooks) не найдены допустимые типы записей производительности.

ERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING

Обратный вызов динамического импорта не был указан.

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_LINKING_ERRORED

Функция линковки вернула модуль, для которого связывание завершилось неудачей.

ERR_VM_MODULE_LINK_FAILURE

Модуль не удалось связать из-за ошибки.

ERR_VM_MODULE_NOT_MODULE

Возвращаемое значение обещанного значения линковки не является объектом vm.Module.

ERR_VM_MODULE_STATUS

Текущий статус модуля не позволяет выполнить данную операцию. Конкретное значение ошибки зависит от конкретной функции.

ERR_WASI_ALREADY_STARTED

Инстанция WASI уже запущена.

ERR_WASI_NOT_STARTED

Инстанция WASI не запущена.

ERR_WORKER_INIT_FAILED

Инициализация Worker завершилась неудачей.

ERR_WORKER_INVALID_EXEC_ARGV

Параметр execArgv , переданный конструктору Worker , содержит некорректные флаги.

ERR_WORKER_NOT_RUNNING

Операция завершилась неудачей, так как экземпляр Worker в данный момент не работает.

ERR_WORKER_OUT_OF_MEMORY

Экземпляр Worker завершился из-за достижения предела памяти.

ERR_WORKER_PATH

Путь к главному скрипту рабочего потока не является абсолютным и не начинается с ./ или ../.

ERR_WORKER_UNSERIALIZABLE_ERROR

Все попытки сериализации необработанной ошибки из потока рабочего потока завершились неудачей.

ERR_WORKER_UNSUPPORTED_EXTENSION

У пути к главному скрипту рабочего потока неизвестное расширение файла.

ERR_WORKER_UNSUPPORTED_OPERATION

Запрошенная функциональность не поддерживается в потоках рабочих процессов.

ERR_ZLIB_INITIALIZATION_FAILED

Создание объекта zlib завершилось неудачей из-за некорректной конфигурации.

HPE_HEADER_OVERFLOW

История
Версия Изменения
v11.4.0, v10.15.0

Максимальный размер заголовка в http_parser был установлен в 8 КБ.

Получено слишком много данных заголовка HTTP. Для защиты от вредоносных или неправильно настроенных клиентов, если получено более 8 КБ данных заголовка HTTP, то разбор HTTP прервётся, без создания объекта запроса или ответа, и будет излучено событие Error с этим кодом.

HPE_UNEXPECTED_CONTENT_LENGTH

Сервер отправляет как заголовок Content-Length, так и Transfer-Encoding: chunked.

Transfer-Encoding: chunked позволяет серверу поддерживать постоянное HTTP-соединение для динамически генерируемого содержимого. В этом случае заголовок HTTP Content-Length использовать нельзя.

Используйте Content-Length или Transfer-Encoding: chunked.

MODULE_NOT_FOUND

История
Версия Изменения
v12.0.0

Добавлено свойство requireStack.

Файл модуля не удалось разрешить при попытке операции require() или import.

Коды ошибок устаревшего Node.js

Устойчивость: 0 - Устаревший. Эти коды ошибок либо несогласованны, либо были удалены.

ERR_CANNOT_TRANSFER_OBJECT

Передаваемое значение postMessage() содержало объект, не поддерживаемый для передачи.

ERR_CLOSED_MESSAGE_PORT

Добавлен в: v10.5.0Удален в: v11.12.0

Была попытка использовать экземпляр MessagePort в закрытом состоянии, обычно после вызова .close().

ERR_CRYPTO_HASH_DIGEST_NO_UTF16

Добавлен в: v9.0.0Удален в: v12.12.0

Кодировка UTF-16 была использована с hash.digest(). Хотя метод hash.digest() разрешает передачу аргумента encoding, вызывая возвращение строки вместо Buffer, кодировка UTF-16 (например, ucs или utf16le) не поддерживается.

ERR_HTTP2_FRAME_ERROR

Добавлен в: v9.0.0Удален в: v10.0.0

Используется, когда возникает ошибка при отправке отдельного фрейма в сессии HTTP/2.

ERR_HTTP2_HEADERS_OBJECT

Добавлен в: v9.0.0Удален в: v10.0.0

Используется, когда ожидается объект HTTP/2 Headers.

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_HTTP_REQUEST_TIMEOUT

Клиент не отправил весь запрос в течение разрешенного времени.

ERR_INDEX_OUT_OF_RANGE

Добавлен в: v10.0.0Удален в: v11.0.0

Указанный индекс находился вне допустимого диапазона (например, отрицательные смещения).

ERR_NAPI_CONS_PROTOTYPE_OBJECT

Добавлен в: v9.0.0Удален в: v10.0.0

Используется модулем Node-API, когда Constructor.prototype не является объектом.

ERR_NO_LONGER_SUPPORTED

API Node.js был вызван неподдерживаемым способом, например, Buffer.write(string, encoding, offset[, length]).

ERR_OUTOFMEMORY

Добавлен в: v9.0.0Удален в: v10.0.0

Используется для общего указания на то, что операция вызвала состояние недостатка памяти.

ERR_PARSE_HISTORY_DATA

Добавлен в: v9.0.0Удален в: v10.0.0

Модуль 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

Встречен SharedArrayBuffer, память которого не управляется движком JavaScript или Node.js, во время сериализации. Такой SharedArrayBuffer не может быть сериализован.

Это может произойти только тогда, когда родные плагины создают SharedArrayBuffer в режиме «externalized» или помещают существующие SharedArrayBuffer в режим externalized.

ERR_UNKNOWN_STDIN_TYPE

Добавлен в: v8.0.0Удален в: v11.7.0

Была попытка запуска процесса Node.js с неизвестным типом файла stdin. Эта ошибка, как правило, указывает на ошибку в самом Node.js, хотя код пользователя может ее спровоцировать.

ERR_UNKNOWN_STREAM_TYPE

Добавлен в: v8.0.0Удален в: v11.7.0

Была попытка запуска процесса Node.js с неизвестным типом файла stdout или stderr. Эта ошибка, как правило, указывает на ошибку в самом Node.js, хотя код пользователя может ее спровоцировать.

ERR_V8BREAKITERATOR

API V8 BreakIterator был использован, но полный набор данных ICU не установлен.

ERR_VALUE_OUT_OF_RANGE

Добавлен в: v9.0.0Удален в: v10.0.0

Используется, когда заданное значение находится вне допустимого диапазона.

ERR_VM_MODULE_NOT_LINKED

Модуль должен быть успешно подключен до инициализации.

ERR_ZLIB_BINDING_CLOSED

Добавлен в: v9.0.0Удален в: v10.0.0

Используется, когда есть попытка использования объекта zlib после его закрытия.

© Joyent, Inc. and other Node contributors
Licensed under the MIT License.
Node.js is a trademark of Joyent, Inc. and is used with its permission.
We are not endorsed by or affiliated with Joyent.
https://nodejs.org/dist/latest-v14.x/docs/api/errors.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API