Spec-Zone.ru › Node.js 24 LTS

Устаревшие API

API Node.js могут быть объявлены устаревшими по следующим причинам:

  • Использование API небезопасно.
  • Доступен улучшенный альтернативный API.
  • В будущей основной версии ожидаются несовместимые изменения API.

В Node.js используются четыре вида устаревания:

  • Только в документации
  • Для приложений (только код, не относящийся к node_modules)
  • Во время выполнения (весь код)
  • Прекращение поддержки

Устаревание, отмеченное только в документации, — это устаревание, о котором сообщается только в документации API Node.js. Оно не вызывает побочных эффектов при работе Node.js. Некоторые устаревания, отмеченные только в документации, приводят к предупреждению во время выполнения, если Node.js запущен с флагом --pending-deprecation (или его альтернативой — переменной окружения NODE_PENDING_DEPRECATION=1), аналогично устареваниям во время выполнения, описанным ниже. Устаревания, отмеченные только в документации, для которых поддерживается этот флаг, явно обозначены в списке устаревших API.

По умолчанию устаревание для приложений, затрагивающее только код, не относящийся к node_modules, приводит к выводу предупреждения процесса в stderr при первом использовании устаревшего API в коде, загруженном не из node_modules. Если используется флаг командной строки --throw-deprecation, устаревание во время выполнения приводит к выбросу ошибки. При использовании --pending-deprecation предупреждения также будут выводиться для кода, загруженного из node_modules.

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

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

Отмена устаревания

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

Список устаревших API

DEP0001: http.OutgoingMessage.prototype.flush

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

Снято с поддержки.

v6.12.0, v4.8.6

Назначен код устаревания.

v1.6.0

Устаревание во время выполнения.

Тип: снято с поддержки

OutgoingMessage.prototype.flush() удалено. Вместо этого используйте OutgoingMessage.prototype.flushHeaders().

DEP0002: require('_linklist')

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

Снято с поддержки.

v6.12.0

Назначен код устаревания.

v5.0.0

Устаревание во время выполнения.

Тип: снято с поддержки

Модуль _linklist устарел. Используйте альтернативу из пользовательского пространства.

DEP0003: _writableState.buffer

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

Снято с поддержки.

v6.12.0, v4.8.6

Назначен код устаревания.

v0.11.15

Устаревание во время выполнения.

Тип: снято с поддержки

_writableState.buffer удалено. Вместо этого используйте _writableState.getBuffer().

DEP0004: CryptoStream.prototype.readyState

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

Снято с поддержки.

v6.12.0, v4.8.6

Назначен код устаревания.

v0.4.0

Устаревание только в документации.

Тип: снято с поддержки

Свойство CryptoStream.prototype.readyState удалено.

DEP0005: конструктор Buffer()

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

Устаревание во время выполнения.

v6.12.0

Назначен код устаревания.

v6.0.0

Устаревание только в документации.

Тип: приложение (только код без node_modules)

Функция Buffer() и конструктор new Buffer() устарели из-за проблем с удобством использования API, которые могут привести к случайным проблемам безопасности.

В качестве альтернативы используйте один из следующих способов создания объектов Buffer:

  • Buffer.alloc(size[, fill[, encoding]]): создаёт Buffer с инициализированной памятью.
  • Buffer.allocUnsafe(size): создаёт Buffer с неинициализированной памятью.
  • Buffer.allocUnsafeSlow(size): создаёт Buffer с неинициализированной памятью.
  • Buffer.from(array): создаёт Buffer с копией array
  • Buffer.from(arrayBuffer[, byteOffset[, length]]) — создаёт Buffer, оборачивающий указанный arrayBuffer.
  • Buffer.from(buffer): создаёт Buffer, копирующий buffer.
  • Buffer.from(string[, encoding]): создаёт Buffer, копирующий string.

Без --pending-deprecation предупреждения во время выполнения выводятся только для кода, не находящегося в node_modules. Это означает, что для использования Buffer() в зависимостях предупреждения об устаревании выводиться не будут. С --pending-deprecation предупреждение во время выполнения выводится независимо от того, где используется Buffer().

DEP0006: child_process options.customFds

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

Снято с поддержки.

v6.12.0, v4.8.6

Назначен код устаревания.

v0.11.14

Устаревание во время выполнения.

v0.5.10

Устаревание только в документации.

Тип: снято с поддержки

В методах child_process модуля spawn(), fork() и exec() параметр options.customFds устарел. Вместо него следует использовать параметр options.stdio.

DEP0007: замените cluster worker.suicide на worker.exitedAfterDisconnect

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

Снято с поддержки.

v7.0.0

Устаревание во время выполнения.

v6.12.0

Назначен код устаревания.

v6.0.0

Устаревание только в документации.

Тип: снято с поддержки

В одной из ранних версий cluster Node.js объекту Worker было добавлено логическое свойство с именем suicide. Это свойство должно было указывать, как и почему завершил работу экземпляр Worker. В Node.js 6.0.0 старое свойство устарело и было заменено новым свойством worker.exitedAfterDisconnect. Старое имя свойства неточно описывало фактическую семантику и имело излишне эмоциональную окраску.

DEP0008: require('node:constants')

История
Версия Изменения
v6.12.0

Назначен код устаревания.

v6.3.0

Устаревание только в документации.

Тип: только в документации

Модуль node:constants устарел. Для доступа к константам, относящимся к конкретным встроенным модулям Node.js, разработчикам следует использовать свойство constants, предоставляемое соответствующим модулем. Например, require('node:fs').constants и require('node:os').constants.

DEP0009: crypto.pbkdf2 без дайджеста

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

Снято с поддержки (для digest === null).

v11.0.0

Устаревание во время выполнения (для digest === null).

v8.0.0

Снято с поддержки (для digest === undefined).

v6.12.0

Назначен код устаревания.

v6.0.0

Устаревание во время выполнения (для digest === undefined).

Тип: снято с поддержки

Использование API crypto.pbkdf2() без указания дайджеста устарело в Node.js 6.0, поскольку по умолчанию метод использовал нерекомендуемый дайджест 'SHA1'. Ранее выводилось предупреждение об устаревании. Начиная с Node.js 8.0.0 вызов crypto.pbkdf2() или crypto.pbkdf2Sync() с параметром digest, установленным в undefined, приводит к выбросу TypeError.

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

Однако теперь передача любого из значений — undefined или null — приводит к выбросу TypeError.

DEP0010: crypto.createCredentials

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

Снято с поддержки.

v6.12.0, v4.8.6

Назначен код устаревания.

v0.11.13

Устаревание во время выполнения.

Тип: снято с поддержки

API crypto.createCredentials() удалён. Вместо него используйте tls.createSecureContext().

DEP0011: crypto.Credentials

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

Снято с поддержки.

v6.12.0, v4.8.6

Назначен код устаревания.

v0.11.13

Устаревание во время выполнения.

Тип: снято с поддержки

Класс crypto.Credentials удалён. Вместо него используйте tls.SecureContext.

DEP0012: Domain.dispose

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

Снято с поддержки.

v6.12.0, v4.8.6

Назначен код устаревания.

v0.11.7

Устаревание во время выполнения.

Тип: снято с поддержки

Domain.dispose() удалён. Явно обрабатывайте ошибки операций ввода-вывода с помощью обработчиков событий ошибок, заданных для домена.

DEP0013: асинхронная функция fs без обратного вызова

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

Снято с поддержки.

v7.0.0

Устаревание во время выполнения.

Тип: снято с поддержки

В Node.js 10.0.0 и более поздних версиях вызов асинхронной функции без обратного вызова приводит к выбросу TypeError. См. https://github.com/nodejs/node/pull/12562.

DEP0014: устаревший интерфейс String для fs.read

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

Снято с поддержки.

v6.0.0

Устаревание во время выполнения.

v6.12.0, v4.8.6

Назначен код устаревания.

v0.1.96

Устаревание только в документации.

Тип: снято с поддержки

Устаревший интерфейс String метода fs.read() устарел. Вместо него используйте API Buffer, как указано в документации.

DEP0015: устаревший интерфейс String для fs.readSync

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

Снято с поддержки.

v6.0.0

Устаревание во время выполнения.

v6.12.0, v4.8.6

Назначен код устаревания.

v0.1.96

Устаревание только в документации.

Тип: снято с поддержки

Устаревший интерфейс String метода fs.readSync() устарел. Вместо него используйте API Buffer, как указано в документации.

DEP0016: GLOBAL/root

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

Снято с поддержки.

v6.12.0

Назначен код устаревания.

v6.0.0

Устаревание во время выполнения.

Тип: снято с поддержки

Псевдонимы GLOBAL и root свойства global устарели в Node.js 6.0.0 и впоследствии были удалены.

DEP0017: Intl.v8BreakIterator

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

Снято с поддержки.

v7.0.0

Устаревание во время выполнения.

Тип: снято с поддержки

Intl.v8BreakIterator было нестандартным расширением и удалено. См. Intl.Segmenter.

DEP0018: необработанные отклонения промисов

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

Снято с поддержки.

v7.0.0

Устаревание во время выполнения.

Тип: снято с поддержки

Необработанные отклонения промисов устарели. По умолчанию отклонения промисов, которые не обрабатываются, завершают процесс Node.js с ненулевым кодом выхода. Чтобы изменить способ обработки необработанных отклонений в Node.js, используйте параметр командной строки --unhandled-rejections.

DEP0019: require('.') разрешается за пределами каталога

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

Функциональность удалена.

v6.12.0, v4.8.6

Назначен код устаревания.

v1.8.1

Устаревание во время выполнения.

Тип: снято с поддержки

В некоторых случаях require('.') мог разрешаться за пределами каталога пакета. Это поведение удалено.

DEP0020: Server.connections

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

Server.connections удалено.

v6.12.0, v4.8.6

Назначен код устаревания.

v0.9.7

Устаревание во время выполнения.

Тип: снято с поддержки

Свойство Server.connections устарело в Node.js 0.9.7 и было удалено. Вместо него используйте метод Server.getConnections().

DEP0021: Server.listenFD

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

Снято с поддержки.

v6.12.0, v4.8.6

Назначен код устаревания.

v0.7.12

Устаревание во время выполнения.

Тип: снято с поддержки

Метод Server.listenFD() устарел и удалён. Вместо него используйте Server.listen({fd: <number>}).

DEP0022: os.tmpDir()

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

Снято с поддержки.

v7.0.0

Устаревание во время выполнения.

Тип: снято с поддержки

API os.tmpDir() устарел в Node.js 7.0.0 и впоследствии был удалён. Вместо него используйте os.tmpdir().

Доступна автоматическая миграция (источник):

npx codemod@latest @nodejs/tmpDir-to-tmpdir copy

DEP0023: os.getNetworkInterfaces()

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

Снято с поддержки.

v6.12.0, v4.8.6

Назначен код устаревания.

v0.6.0

Устаревание во время выполнения.

Тип: снято с поддержки

Метод os.getNetworkInterfaces() устарел. Вместо него используйте метод os.networkInterfaces().

DEP0024: REPLServer.prototype.convertToContext()

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

Снято с поддержки.

v7.0.0

Устаревание во время выполнения.

Тип: снято с поддержки

API REPLServer.prototype.convertToContext() удалён.

DEP0025: require('node:sys')

История
Версия Изменения
v6.12.0, v4.8.6

Назначен код устаревания.

v1.0.0

Устаревание во время выполнения.

Тип: во время выполнения

Модуль node:sys устарел. Вместо него используйте модуль util.

DEP0026: util.print()

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

Снято с поддержки.

v6.12.0, v4.8.6

Назначен код устаревания.

v0.11.3

Устаревание во время выполнения.

Тип: снято с поддержки

util.print() удалён. Вместо него используйте console.log().

Доступна автоматическая миграция (источник):

npx codemod@latest @nodejs/util-print-to-console-log copy

DEP0027: util.puts()

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

Снято с поддержки.

v6.12.0, v4.8.6

Назначен код устаревания.

v0.11.3

Устаревание во время выполнения.

Тип: снято с поддержки

util.puts() удалён. Вместо него используйте console.log().

Доступна автоматическая миграция (источник):

npx codemod@latest @nodejs/util-print-to-console-log copy

DEP0028: util.debug()

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

Снято с поддержки.

v6.12.0, v4.8.6

Назначен код устаревания.

v0.11.3

Устаревание во время выполнения.

Тип: снято с поддержки

util.debug() удалён. Вместо него используйте console.error().

Доступна автоматическая миграция (источник):

npx codemod@latest @nodejs/util-print-to-console-log copy

DEP0029: util.error()

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

Снято с поддержки.

v6.12.0, v4.8.6

Назначен код устаревания.

v0.11.3

Устаревание во время выполнения.

Тип: снято с поддержки

util.error() удалён. Вместо него используйте console.error().

Доступна автоматическая миграция (источник):

npx codemod@latest @nodejs/util-print-to-console-log copy

DEP0030: SlowBuffer

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

Устаревание во время выполнения.

v6.12.0

Назначен код устаревания.

v6.0.0

Устаревание только в документации.

Тип: во время выполнения

Класс SlowBuffer устарел. Вместо него используйте Buffer.allocUnsafeSlow(size).

Доступна автоматическая миграция (источник).

npx codemod@latest @nodejs/slow-buffer-to-buffer-alloc-unsafe-slow copy

DEP0031: ecdh.setPublicKey()

История
Версия Изменения
v6.12.0

Назначен код устаревания.

v5.2.0

Устаревание только в документации.

Тип: только в документации

Метод ecdh.setPublicKey() теперь устарел, поскольку его включение в API нецелесообразно.

DEP0032: модуль node:domain

История
Версия Изменения
v6.12.0, v4.8.6

Назначен код устаревания.

v1.4.2

Устаревание только в документации.

Тип: только в документации

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

DEP0033: EventEmitter.listenerCount()

История
Версия Изменения
v24.14.0

Устаревание отменено.

v6.12.0, v4.8.6

Назначен код устаревания.

v3.2.0

Устаревание только в документации.

Тип: отменено

API events.listenerCount(emitter, eventName) устарел, поскольку предоставлял ту же функциональность, что и emitter.listenerCount(eventName). Устаревание было отменено, поскольку эта функция теперь также принимает аргументы <EventTarget>.

DEP0034: fs.exists(path, callback)

История
Версия Изменения
v6.12.0, v4.8.6

Назначен код устаревания.

v1.0.0

Устаревание только в документации.

Тип: только в документации

API fs.exists(path, callback) устарел. Вместо него используйте fs.stat() или fs.access().

DEP0035: fs.lchmod(path, mode, callback)

История
Версия Изменения
v6.12.0, v4.8.6

Назначен код устаревания.

v0.4.7

Устаревание только в документации.

Тип: только в документации

API fs.lchmod(path, mode, callback) устарел.

DEP0036: fs.lchmodSync(path, mode)

История
Версия Изменения
v6.12.0, v4.8.6

Назначен код устаревания.

v0.4.7

Устаревание только в документации.

Тип: только в документации

API fs.lchmodSync(path, mode) устарел.

DEP0037: fs.lchown(path, uid, gid, callback)

История
Версия Изменения
v10.6.0

Устаревание отменено.

v6.12.0, v4.8.6

Назначен код устаревания.

v0.4.7

Устаревание только в документации.

Тип: устаревание отменено

API fs.lchown(path, uid, gid, callback) устарел. Устаревание было отменено, поскольку необходимые вспомогательные API были добавлены в libuv.

DEP0038: fs.lchownSync(path, uid, gid)

История
Версия Изменения
v10.6.0

Устаревание отменено.

v6.12.0, v4.8.6

Назначен код устаревания.

v0.4.7

Устаревание только в документации.

Тип: устаревание отменено

API fs.lchownSync(path, uid, gid) устарел. Устаревание было отменено, поскольку необходимые вспомогательные API были добавлены в libuv.

DEP0039: require.extensions

История
Версия Изменения
v6.12.0, v4.8.6

Назначен код устаревания.

v0.10.6

Устаревание только в документации.

Тип: только в документации

Свойство require.extensions устарело.

DEP0040: модуль node:punycode

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

Устаревание во время выполнения.

v16.6.0

Добавлена поддержка --pending-deprecation.

v7.0.0

Устаревание только в документации.

Тип: во время выполнения

Модуль punycode устарел. Вместо него используйте альтернативу из пользовательского пространства.

DEP0041: переменная среды NODE_REPL_HISTORY_FILE

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

Снято с поддержки.

v6.12.0, v4.8.6

Назначен код устаревания.

v3.0.0

Устаревание только в документации.

Тип: снято с поддержки

Переменная среды NODE_REPL_HISTORY_FILE была удалена. Вместо неё используйте NODE_REPL_HISTORY.

DEP0042: tls.CryptoStream

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

Снято с поддержки.

v6.12.0, v4.8.6

Назначен код устаревания.

v0.11.3

Устаревание только в документации.

Тип: снято с поддержки

Класс tls.CryptoStream был удалён. Вместо него используйте tls.TLSSocket.

DEP0043: tls.SecurePair

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

Снято с поддержки.

v8.0.0

Устаревание во время выполнения.

v6.12.0

Назначен код устаревания.

v6.0.0

Устаревание только в документации.

v0.11.15

Устаревание отменено.

v0.11.3

Устаревание во время выполнения.

Тип: снято с поддержки

Класс tls.SecurePair устарел. Вместо него используйте tls.TLSSocket.

DEP0044: util.isArray()

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

Устаревание во время выполнения.

v6.12.0, v4.8.6

Назначен код устаревания.

v4.0.0, v3.3.1

Устаревание только в документации.

Тип: во время выполнения

API util.isArray() устарел. Вместо него используйте Array.isArray().

Доступна автоматизированная миграция (исходный код):

npx codemod@latest @nodejs/util-is copy

DEP0045: util.isBoolean()

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

Устаревание с последующим снятием с поддержки.

v22.0.0

Устаревание во время выполнения.

v6.12.0, v4.8.6

Назначен код устаревания.

v4.0.0, v3.3.1

Устаревание только в документации.

Тип: снято с поддержки

API util.isBoolean() удалён. Вместо него используйте typeof arg === 'boolean'.

Доступна автоматизированная миграция (исходный код):

npx codemod@latest @nodejs/util-is copy

DEP0046: util.isBuffer()

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

Устаревание с последующим снятием с поддержки.

v22.0.0

Устаревание во время выполнения.

v6.12.0, v4.8.6

Назначен код устаревания.

v4.0.0, v3.3.1

Устаревание только в документации.

Тип: снято с поддержки

API util.isBuffer() удалён. Вместо него используйте Buffer.isBuffer().

Доступна автоматизированная миграция (исходный код):

npx codemod@latest @nodejs/util-is copy

DEP0047: util.isDate()

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

Устаревание с последующим снятием с поддержки.

v22.0.0

Устаревание во время выполнения.

v6.12.0, v4.8.6

Назначен код устаревания.

v4.0.0, v3.3.1

Устаревание только в документации.

Тип: снято с поддержки

API util.isDate() удалён. Вместо него используйте arg instanceof Date.

Для более надёжной проверки можно использовать: Date.prototype.toString.call(arg) === '[object Date]' && !isNaN(arg). Это также можно использовать в блоке try/catch для обработки недопустимых объектов даты.

Доступна автоматизированная миграция (исходный код):

npx codemod@latest @nodejs/util-is copy

DEP0048: util.isError()

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

Устаревание с последующим снятием с поддержки.

v22.0.0

Устаревание во время выполнения.

v6.12.0, v4.8.6

Назначен код устаревания.

v4.0.0, v3.3.1

Устаревание только в документации.

Тип: снято с поддержки

API util.isError() удалён. Используйте Error.isError(arg).

Доступна автоматизированная миграция (исходный код):

npx codemod@latest @nodejs/util-is copy

DEP0049: util.isFunction()

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

Устаревание с последующим снятием с поддержки.

v22.0.0

Устаревание во время выполнения.

v6.12.0, v4.8.6

Назначен код устаревания.

v4.0.0, v3.3.1

Устаревание только в документации.

Тип: снято с поддержки

API util.isFunction() удалён. Вместо него используйте typeof arg === 'function'.

Доступна автоматизированная миграция (исходный код):

npx codemod@latest @nodejs/util-is copy

DEP0050: util.isNull()

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

Устаревание с последующим снятием с поддержки.

v22.0.0

Устаревание во время выполнения.

v6.12.0, v4.8.6

Назначен код устаревания.

v4.0.0, v3.3.1

Устаревание только в документации.

Тип: снято с поддержки

API util.isNull() удалён. Вместо него используйте arg === null.

Доступна автоматизированная миграция (исходный код):

npx codemod@latest @nodejs/util-is copy

DEP0051: util.isNullOrUndefined()

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

Устаревание с последующим снятием с поддержки.

v22.0.0

Устаревание во время выполнения.

v6.12.0, v4.8.6

Назначен код устаревания.

v4.0.0, v3.3.1

Устаревание только в документации.

Тип: снято с поддержки

API util.isNullOrUndefined() удалён. Вместо него используйте arg === null || arg === undefined.

Доступна автоматизированная миграция (исходный код):

npx codemod@latest @nodejs/util-is copy

DEP0052: util.isNumber()

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

Устаревание с последующим снятием с поддержки.

v22.0.0

Устаревание во время выполнения.

v6.12.0, v4.8.6

Назначен код устаревания.

v4.0.0, v3.3.1

Устаревание только в документации.

Тип: снято с поддержки

API util.isNumber() удалён. Вместо него используйте typeof arg === 'number'.

Доступна автоматизированная миграция (исходный код):

npx codemod@latest @nodejs/util-is copy

DEP0053: util.isObject()

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

Устаревание с последующим снятием с поддержки.

v22.0.0

Устаревание во время выполнения.

v6.12.0, v4.8.6

Назначен код устаревания.

v4.0.0, v3.3.1

Устаревание только в документации.

Тип: снято с поддержки

API util.isObject() удалён. Вместо него используйте arg && typeof arg === 'object'.

Доступна автоматизированная миграция (исходный код):

npx codemod@latest @nodejs/util-is copy

DEP0054: util.isPrimitive()

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

Устаревание с последующим снятием с поддержки.

v22.0.0

Устаревание во время выполнения.

v6.12.0, v4.8.6

Назначен код устаревания.

v4.0.0, v3.3.1

Устаревание только в документации.

Тип: снято с поддержки

API util.isPrimitive() удалён. Вместо него используйте Object(arg) !== arg.

Доступна автоматизированная миграция (исходный код):

npx codemod@latest @nodejs/util-is copy

DEP0055: util.isRegExp()

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

Устаревание с последующим снятием с поддержки.

v22.0.0

Устаревание во время выполнения.

v6.12.0, v4.8.6

Назначен код устаревания.

v4.0.0, v3.3.1

Устаревание только в документации.

Тип: снято с поддержки

API util.isRegExp() удалён. Вместо него используйте arg instanceof RegExp.

Доступна автоматизированная миграция (исходный код):

npx codemod@latest @nodejs/util-is copy

DEP0056: util.isString()

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

Устаревание с последующим снятием с поддержки.

v22.0.0

Устаревание во время выполнения.

v6.12.0, v4.8.6

Назначен код устаревания.

v4.0.0, v3.3.1

Устаревание только в документации.

Тип: снято с поддержки

API util.isString() удалён. Вместо него используйте typeof arg === 'string'.

Доступна автоматизированная миграция (исходный код):

npx codemod@latest @nodejs/util-is copy

DEP0057: util.isSymbol()

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

Устаревание с последующим снятием с поддержки.

v22.0.0

Устаревание во время выполнения.

v6.12.0, v4.8.6

Назначен код устаревания.

v4.0.0, v3.3.1

Устаревание только в документации.

Тип: снято с поддержки

API util.isSymbol() удалён. Вместо него используйте typeof arg === 'symbol'.

Доступна автоматизированная миграция (исходный код):

npx codemod@latest @nodejs/util-is copy

DEP0058: util.isUndefined()

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

Устаревание с последующим снятием с поддержки.

v22.0.0

Устаревание во время выполнения.

v6.12.0, v4.8.6

Назначен код устаревания.

v4.0.0, v3.3.1

Устаревание только в документации.

Тип: снято с поддержки

API util.isUndefined() удалён. Вместо него используйте arg === undefined.

Доступна автоматизированная миграция (исходный код):

npx codemod@latest @nodejs/util-is copy

DEP0059: util.log()

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

Устаревание с последующим снятием с поддержки.

v22.0.0

Устаревание во время выполнения.

v6.12.0

Назначен код устаревания.

v6.0.0

Устаревание только в документации.

Тип: снято с поддержки

API util.log() удалён, поскольку это неподдерживаемый устаревший API, который случайно стал доступен пользовательскому коду. В зависимости от конкретных потребностей можно рассмотреть следующие альтернативы:

  • Сторонние библиотеки для журналирования

  • Используйте console.log(new Date().toLocaleString(), message)

Выбрав одну из этих альтернатив, вы сможете отказаться от util.log() и выбрать стратегию журналирования, соответствующую конкретным требованиям и сложности вашего приложения.

Доступна автоматизированная миграция (исходный код):

npx codemod@latest @nodejs/util-log-to-console-log copy

DEP0060: util._extend()

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

Устаревание во время выполнения.

v6.12.0

Назначен код устаревания.

v6.0.0

Устаревание только в документации.

Тип: во время выполнения

API util._extend() устарел, поскольку это неподдерживаемый устаревший API, который случайно стал доступен пользовательскому коду. Вместо него используйте target = Object.assign(target, source).

Доступна автоматизированная миграция (исходный код):

npx codemod@latest @nodejs/util-extend-to-object-assign copy

DEP0061: fs.SyncWriteStream

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

Снято с поддержки.

v8.0.0

Устаревание во время выполнения.

v7.0.0

Устаревание только в документации.

Тип: снято с поддержки

Класс fs.SyncWriteStream никогда не предназначался для публичного использования и был удалён. Альтернативного API нет. Используйте альтернативу из пользовательского кода.

DEP0062: node --debug

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

Снято с поддержки.

v8.0.0

Устаревание во время выполнения.

Тип: снято с поддержки

--debug активирует устаревший интерфейс отладчика V8, удалённый в V8 5.8. Вместо него используется Inspector, который активируется с помощью --inspect.

DEP0063: ServerResponse.prototype.writeHeader()

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

Устаревание только в документации.

Тип: только в документации

API ServerResponse.prototype.writeHeader() модуля node:http устарел. Вместо него используйте ServerResponse.prototype.writeHead().

Метод ServerResponse.prototype.writeHeader() никогда не документировался как официально поддерживаемый API.

DEP0064: tls.createSecurePair()

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

Снято с поддержки.

v8.0.0

Устаревание во время выполнения.

v6.12.0

Назначен код устаревания.

v6.0.0

Устаревание только в документации.

v0.11.15

Устаревание отменено.

v0.11.3

Устаревание во время выполнения.

Тип: снято с поддержки

В документации Node.js 0.11.3 API tls.createSecurePair() был объявлен устаревшим. Пользователям следует использовать tls.Socket.

DEP0065: repl.REPL_MODE_MAGIC и NODE_REPL_MODE=magic

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

Снято с поддержки.

v8.0.0

Устаревание только в документации.

Тип: снято с поддержки

Константа REPL_MODE_MAGIC модуля node:repl, использовавшаяся для параметра replMode, удалена. Начиная с Node.js 6.0.0, когда был импортирован V8 5.0, её поведение полностью совпадало с поведением REPL_MODE_SLOPPY. Вместо неё используйте REPL_MODE_SLOPPY.

Переменная среды NODE_REPL_MODE используется для задания базового replMode интерактивного сеанса node. Её значение magic также удалено. Вместо него используйте sloppy.

DEP0066: OutgoingMessage.prototype._headers, OutgoingMessage.prototype._headerNames

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

Снято с поддержки.

v12.0.0

Устаревание во время выполнения.

v8.0.0

Устаревание только в документации.

Тип: снято с поддержки

Свойства OutgoingMessage.prototype._headers и OutgoingMessage.prototype._headerNames модуля node:http устарели. Для работы с исходящими заголовками используйте один из публичных методов (например, OutgoingMessage.prototype.getHeader(), OutgoingMessage.prototype.getHeaders(), OutgoingMessage.prototype.getHeaderNames(), OutgoingMessage.prototype.getRawHeaderNames(), OutgoingMessage.prototype.hasHeader(), OutgoingMessage.prototype.removeHeader(), OutgoingMessage.prototype.setHeader()).

Свойства OutgoingMessage.prototype._headers и OutgoingMessage.prototype._headerNames никогда не документировались как официально поддерживаемые свойства.

Доступна автоматизированная миграция (исходный код):

npx codemod@latest @nodejs/http-outgoingmessage-headers copy

DEP0067: OutgoingMessage.prototype._renderHeaders

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

Устаревание только в документации.

Тип: только в документации

API OutgoingMessage.prototype._renderHeaders() модуля node:http устарел.

Свойство OutgoingMessage.prototype._renderHeaders никогда не документировалось как официально поддерживаемый API.

DEP0068: node debug

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

Устаревшая команда node debug была удалена.

v8.0.0

Устаревание во время выполнения.

Тип: снято с поддержки

node debug соответствует устаревшему отладчику CLI, который был заменён отладчиком CLI на основе инспектора V8, доступным через node inspect.

DEP0069: vm.runInDebugContext(string)

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

Снято с поддержки.

v9.0.0

Устаревание во время выполнения.

v8.0.0

Устаревание только в документации.

Тип: снято с поддержки

DebugContext удалён из V8 и недоступен в Node.js 10 и более поздних версиях.

DebugContext был экспериментальным API.

DEP0070: async_hooks.currentId()

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

Снято с поддержки.

v8.2.0

Устаревание во время выполнения.

Тип: снято с поддержки

async_hooks.currentId() переименован в async_hooks.executionAsyncId() для большей ясности.

Это изменение было внесено, когда async_hooks являлся экспериментальным API.

DEP0071: async_hooks.triggerId()

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

Снято с поддержки.

v8.2.0

Устаревание во время выполнения.

Тип: снято с поддержки

async_hooks.triggerId() переименован в async_hooks.triggerAsyncId() для большей ясности.

Это изменение было внесено, когда async_hooks являлся экспериментальным API.

DEP0072: async_hooks.AsyncResource.triggerId()

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

Снято с поддержки.

v8.2.0

Устаревание во время выполнения.

Тип: снято с поддержки

async_hooks.AsyncResource.triggerId() переименован в async_hooks.AsyncResource.triggerAsyncId() для большей ясности.

Это изменение было внесено, когда async_hooks являлся экспериментальным API.

DEP0073: Несколько внутренних свойств net.Server

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

Снято с поддержки.

v9.0.0

Устаревание во время выполнения.

Тип: снято с поддержки

Доступ к нескольким внутренним недокументированным свойствам экземпляров net.Server с неподходящими именами объявлен устаревшим.

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

DEP0074: REPLServer.bufferedCommand

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

Снято с поддержки.

v9.0.0

Устаревание во время выполнения.

Тип: снято с поддержки

Свойство REPLServer.bufferedCommand было объявлено устаревшим в пользу REPLServer.clearBufferedCommand().

DEP0075: REPLServer.parseREPLKeyword()

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

Снято с поддержки.

v9.0.0

Устаревание во время выполнения.

Тип: снято с поддержки

REPLServer.parseREPLKeyword() больше недоступен в пользовательском коде.

DEP0076: tls.parseCertString()

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

Снято с поддержки.

v9.0.0

Устаревание во время выполнения.

v8.6.0

Устаревание только в документации.

Тип: снято с поддержки

tls.parseCertString() — это простая вспомогательная функция для разбора, которая по ошибке стала общедоступной. Она предназначалась для разбора строк субъекта и издателя сертификата, но никогда не обрабатывала относительные различительные имена с несколькими значениями должным образом.

В предыдущих версиях этого документа предлагалось использовать querystring.parse() в качестве альтернативы tls.parseCertString(). Однако querystring.parse() также некорректно обрабатывает некоторые субъекты сертификатов и не должна использоваться.

DEP0077: Module._debug()

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

Устаревание во время выполнения.

Тип: во время выполнения

Module._debug() устарел.

Функция Module._debug() никогда не документировалась как официально поддерживаемый API.

DEP0078: REPLServer.turnOffEditorMode()

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

Снято с поддержки.

v9.0.0

Устаревание во время выполнения.

Тип: снято с поддержки

REPLServer.turnOffEditorMode() больше недоступен в пользовательском коде.

DEP0079: Пользовательская функция инспекции объектов через .inspect()

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

Снято с поддержки.

v10.0.0

Устаревание во время выполнения.

v8.7.0

Устаревание только в документации.

Тип: снято с поддержки

Использование свойства с именем inspect объекта для задания пользовательской функции инспекции для util.inspect() объявлено устаревшим. Вместо него используйте util.inspect.custom. Для обратной совместимости с версиями Node.js до 6.4.0 можно указать оба варианта.

DEP0080: path._makeLong()

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

Устаревание только в документации.

Тип: только в документации

Внутренний path._makeLong() не предназначался для публичного использования. Однако он оказался полезен модулям пользовательского кода. Внутренний API объявлен устаревшим и заменён идентичным публичным методом path.toNamespacedPath().

DEP0081: fs.truncate() с использованием файлового дескриптора

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

Снято с эксплуатации.

v9.0.0

Устарело во время выполнения.

Тип: снято с эксплуатации

fs.truncate() fs.truncateSync() с использованием файлового дескриптора устарело. Для работы с файловыми дескрипторами используйте fs.ftruncate() или fs.ftruncateSync().

Доступна автоматическая миграция (исходный код):

npx codemod@latest @nodejs/fs-truncate-fd-deprecation copy

DEP0082: REPLServer.prototype.memory()

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

Снято с эксплуатации.

v9.0.0

Устарело во время выполнения.

Тип: снято с эксплуатации

REPLServer.prototype.memory() необходима только для внутренней механики самого REPLServer. Не используйте эту функцию.

DEP0083: Отключение ECDH путем установки ecdhCurve в значение false

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

Снято с эксплуатации.

v9.2.0

Устарело во время выполнения.

Тип: снято с эксплуатации

Параметру ecdhCurve в tls.createSecureContext() и tls.TLSSocket можно было присвоить значение false, чтобы отключить ECDH только на сервере. Этот режим устарел в рамках подготовки к переходу на OpenSSL 1.1.0 и ради согласованности с клиентом; теперь он не поддерживается. Вместо него используйте параметр ciphers.

DEP0084: подключение встроенных внутренних зависимостей

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

Эта функциональность удалена.

v10.0.0

Устарело во время выполнения.

Тип: снято с эксплуатации

Начиная с версий Node.js 4.4.0 и 5.2.0, несколько модулей, предназначенных только для внутреннего использования, по ошибке стали доступны пользовательскому коду через require(). К ним относились:

  • v8/tools/codemap
  • v8/tools/consarray
  • v8/tools/csvparser
  • v8/tools/logreader
  • v8/tools/profile_view
  • v8/tools/profile
  • v8/tools/SourceMap
  • v8/tools/splaytree
  • v8/tools/tickprocessor-driver
  • v8/tools/tickprocessor
  • node-inspect/lib/_inspect (начиная с версии 7.6.0)
  • node-inspect/lib/internal/inspect_client (начиная с версии 7.6.0)
  • node-inspect/lib/internal/inspect_repl (начиная с версии 7.6.0)

У модулей v8/* нет экспортируемых элементов, а при импорте не в определенном порядке они фактически вызывали бы ошибки. Поэтому практически не существует обоснованных случаев их импорта через require().

С другой стороны, node-inspect можно установить локально с помощью менеджера пакетов, поскольку он опубликован в реестре npm под тем же именем. Если это сделать, изменять исходный код не потребуется.

DEP0085: уязвимый API AsyncHooks

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

Снято с эксплуатации.

v9.4.0, v8.10.0

Устарело во время выполнения.

Тип: снято с эксплуатации

Уязвимый API AsyncHooks никогда не документировался и имел ряд незначительных проблем. Вместо него используйте API AsyncResource. См. https://github.com/nodejs/node/issues/15572.

DEP0086: удаление runInAsyncIdScope

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

Снято с эксплуатации.

v9.4.0, v8.10.0

Устарело во время выполнения.

Тип: снято с эксплуатации

runInAsyncIdScope не генерирует событие 'before' или 'after' и поэтому может вызвать множество проблем. См. https://github.com/nodejs/node/issues/14328.

DEP0089: require('node:assert')

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

Предупреждение об устаревании отозвано.

v9.9.0, v8.13.0

Устарело только в документации.

Тип: предупреждение об устаревании отозвано

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

DEP0090: недопустимая длина тегов аутентификации GCM

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

Снято с эксплуатации.

v10.0.0

Устарело во время выполнения.

Тип: снято с эксплуатации

Ранее Node.js поддерживал все длины тегов аутентификации GCM, принимаемые OpenSSL при вызове decipher.setAuthTag(). Начиная с Node.js v11.0.0 разрешены только теги аутентификации длиной 128, 120, 112, 104, 96, 64 и 32 бита. Согласно NIST SP 800-38D, теги аутентификации другой длины недопустимы.

DEP0091: crypto.DEFAULT_ENCODING

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

Снято с эксплуатации.

v10.0.0

Устарело во время выполнения.

Тип: снято с эксплуатации

Свойство crypto.DEFAULT_ENCODING существовало только для совместимости с выпусками Node.js до версий 0.9.3 и было удалено.

DEP0092: привязка верхнеуровневого this к module.exports

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

Устарело только в документации.

Тип: только в документации

Присваивание свойств верхнеуровневому this вместо использования module.exports устарело. Разработчикам следует использовать вместо этого exports или module.exports.

DEP0093: crypto.fips устарел и заменен

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

Устарело во время выполнения.

v10.0.0

Устарело только в документации.

Тип: во время выполнения

Свойство crypto.fips устарело. Вместо него используйте crypto.setFips() и crypto.getFips().

Доступна автоматическая миграция (исходный код).

npx codemod@latest @nodejs/crypto-fips-to-getFips copy

DEP0094: использование assert.fail() с несколькими аргументами

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

Устарело во время выполнения.

Тип: во время выполнения

Использование assert.fail() с несколькими аргументами устарело. Используйте assert.fail() с одним аргументом или другой метод модуля node:assert.

DEP0095: timers.enroll()

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

Снято с эксплуатации.

v10.0.0

Устарело во время выполнения.

Тип: снято с эксплуатации

timers.enroll() удалена. Вместо нее используйте общедоступную документированную функцию setTimeout() или setInterval().

DEP0096: timers.unenroll()

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

Снято с эксплуатации.

v10.0.0

Устарело во время выполнения.

Тип: снято с эксплуатации

timers.unenroll() удалена. Вместо нее используйте общедоступную документированную функцию clearTimeout() или clearInterval().

DEP0097: MakeCallback со свойством domain

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

Устарело во время выполнения.

Тип: во время выполнения

Пользователям MakeCallback, которые добавляют свойство domain для передачи контекста, следует перейти на вариант async_context функций MakeCallback или CallbackScope либо на высокоуровневый класс AsyncResource.

DEP0098: API AsyncHooks для встраиваемых приложений AsyncResource.emitBefore и AsyncResource.emitAfter

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

Снято с эксплуатации.

v10.0.0, v9.6.0, v8.12.0

Устарело во время выполнения.

Тип: снято с эксплуатации

Встраиваемый API AsyncHooks предоставляет методы .emitBefore() и .emitAfter(), которые очень легко использовать неправильно, что может привести к неисправимым ошибкам.

Вместо него используйте API asyncResource.runInAsyncScope(), который представляет собой гораздо более безопасную и удобную альтернативу. См. https://github.com/nodejs/node/pull/18513.

DEP0099: API C++ node::MakeCallback, не учитывающие асинхронный контекст

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

Устарело на этапе компиляции.

Тип: на этапе компиляции

Некоторые версии API node::MakeCallback, доступные нативным дополнениям, устарели. Используйте версии API, принимающие параметр async_context.

DEP0100: process.assert()

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

Снято с эксплуатации.

v10.0.0

Устарело во время выполнения.

v0.3.7

Устарело только в документации.

Тип: снято с эксплуатации

process.assert() устарела. Вместо нее используйте модуль assert.

Эта возможность никогда не документировалась.

Доступна автоматическая миграция (исходный код).

npx codemod@latest @nodejs/process-assert-to-node-assert copy

DEP0101: --with-lttng

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

Снято с эксплуатации.

Тип: снято с эксплуатации

Параметр компиляции --with-lttng удален.

DEP0102: использование noAssert в операциях Buffer#(read|write)

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

Снято с эксплуатации.

Тип: снято с эксплуатации

Аргумент noAssert больше не влияет на функциональность. Входные данные проверяются независимо от значения noAssert. Пропуск проверки может привести к труднообнаружимым ошибкам и сбоям.

DEP0103: проверки типов process.binding('util').is[...]

История
Версия Изменения
v10.9.0

Заменено предупреждением об устаревании DEP0111.

v10.0.0

Устарело только в документации.

Тип: только в документации (поддерживает --pending-deprecation)

В целом следует избегать использования process.binding(). В частности, методы проверки типов можно заменить на util.types.

Это предупреждение об устаревании заменено предупреждением об устаревании API process.binding() (DEP0111).

DEP0104: преобразование process.env в строку

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

Устарело только в документации; поддерживается --pending-deprecation.

Тип: только в документации (поддерживает --pending-deprecation)

При присваивании свойству, не являющемуся строкой, в process.env присвоенное значение неявно преобразуется в строку. Такое поведение считается устаревшим, если присваиваемое значение не является строкой, логическим значением или числом. В будущем такое присваивание может привести к ошибке. Преобразуйте значение свойства в строку, прежде чем присваивать его process.env.

DEP0105: decipher.finaltol

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

Снято с эксплуатации.

v10.0.0

Устарело во время выполнения.

Тип: снято с эксплуатации

decipher.finaltol() никогда не документировалась и была псевдонимом для decipher.final(). Этот API удален; рекомендуется использовать вместо него decipher.final().

DEP0106: crypto.createCipher и crypto.createDecipher

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

Снято с эксплуатации.

v11.0.0

Устарело во время выполнения.

v10.0.0

Устарело только в документации.

Тип: снято с эксплуатации

crypto.createCipher() и crypto.createDecipher() удалены, поскольку они используют слабую функцию выработки ключа (MD5 без соли) и статические векторы инициализации. Рекомендуется получать ключ с помощью crypto.pbkdf2() или crypto.scrypt(), используя случайные соли, а для получения объектов Cipheriv и Decipheriv соответственно использовать crypto.createCipheriv() и crypto.createDecipheriv().

DEP0107: tls.convertNPNProtocols()

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

Снято с эксплуатации.

v10.0.0

Устарело во время выполнения.

Тип: снято с эксплуатации

Это была недокументированная вспомогательная функция, не предназначенная для использования вне ядра Node.js. Она устарела после удаления поддержки NPN (согласования следующего протокола).

DEP0108: zlib.bytesRead

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

Снято с эксплуатации.

v11.0.0

Устарело во время выполнения.

v10.0.0

Устарело только в документации.

Тип: снято с эксплуатации

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

Доступна автоматическая миграция (исходный код):

npx codemod@latest @nodejs/zlib-bytesread-to-byteswritten copy

DEP0109: поддержка недопустимых URL в http, https и tls

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

Снято с эксплуатации.

v11.0.0

Устарело во время выполнения.

Тип: снято с эксплуатации

Ранее некоторые поддерживаемые (но строго говоря недопустимые) URL принимались API http.request(), http.get(), https.request(), https.get() и tls.checkServerIdentity(), поскольку их принимал устаревший API url.parse(). Теперь упомянутые API используют парсер URL WHATWG, который требует строго допустимых URL. Передача недопустимого URL считается устаревшей, и в будущем поддержка будет удалена.

DEP0110: кэшированные данные vm.Script

История
Версия Изменения
v10.6.0

Устарело только в документации.

Тип: только в документации

Параметр produceCachedData устарел. Вместо него используйте script.createCachedData().

DEP0111: process.binding()

История
Версия Изменения
v11.12.0

Добавлена поддержка --pending-deprecation.

v10.9.0

Устарело только в документации.

Тип: только в документации (поддерживает --pending-deprecation)

process.binding() предназначен только для внутреннего кода Node.js.

Хотя в целом process.binding() еще не снят с эксплуатации, он недоступен при включенной модели разрешений.

DEP0112: закрытые API dgram

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

Устарело во время выполнения.

Тип: во время выполнения

Ранее модуль node:dgram содержал несколько API, которые никогда не предназначались для использования вне ядра Node.js: Socket.prototype._handle, Socket.prototype._receiving, Socket.prototype._bindState, Socket.prototype._queue, Socket.prototype._reuseAddr, Socket.prototype._healthCheck(), Socket.prototype._stopReceiving() и dgram._createSocketHandle().

DEP0113: Cipher.setAuthTag(), Decipher.getAuthTag()

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

Снято с эксплуатации.

v11.0.0

Устарело во время выполнения.

Тип: снято с эксплуатации

Cipher.setAuthTag() и Decipher.getAuthTag() больше недоступны. Они никогда не документировались и при вызове выдавали ошибку.

DEP0114: crypto._toBuf()

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

Снято с эксплуатации.

v11.0.0

Устарело во время выполнения.

Тип: снято с эксплуатации

Функция crypto._toBuf() не предназначалась для использования модулями вне ядра Node.js и была удалена.

DEP0115: crypto.prng(), crypto.pseudoRandomBytes(), crypto.rng()

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

Устарело только в документации; поддерживается --pending-deprecation.

Тип: только в документации (поддерживает --pending-deprecation)

В последних версиях Node.js между crypto.randomBytes() и crypto.pseudoRandomBytes() нет разницы. Последняя функция устарела вместе с недокументированными псевдонимами crypto.prng() и crypto.rng(); вместо них рекомендуется использовать crypto.randomBytes(). В одном из будущих выпусков она может быть удалена.

DEP0116: устаревший API URL

История
Версия Изменения
v19.0.0, v18.13.0

`url.parse()` снова объявлена устаревшей в DEP0169.

v15.13.0, v14.17.0

Предупреждение об устаревании отозвано. Статус изменен на «устаревший».

v11.0.0

Устарело только в документации.

Тип: предупреждение об устаревании отозвано

Устаревший API URL объявлен устаревшим. Это касается url.format(), url.parse(), url.resolve() и устаревшего urlObject. Вместо него используйте API URL WHATWG.

Доступна автоматическая миграция (исходный код).

npx codemod@latest @nodejs/node-url-to-whatwg-url copy

DEP0117: нативные дескрипторы криптографии

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

Снято с эксплуатации.

v11.0.0

Устарело во время выполнения.

Тип: снято с эксплуатации

В предыдущих версиях Node.js дескрипторы внутренних нативных объектов предоставлялись через свойство _handle классов Cipher, Decipher, DiffieHellman, DiffieHellmanGroup, ECDH, Hash, Hmac, Sign и Verify. Свойство _handle удалено, поскольку неправильное использование нативного объекта может привести к аварийному завершению приложения.

DEP0118: поддержка dns.lookup() при ложном имени хоста

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

Устарело во время выполнения.

Тип: во время выполнения

В предыдущих версиях Node.js для обеспечения обратной совместимости поддерживался вызов dns.lookup() с ложным именем хоста, например dns.lookup(false). Это поведение не документировано и, предположительно, не используется в реальных приложениях. В будущих версиях Node.js оно приведет к ошибке.

DEP0119: закрытый API process.binding('uv').errname()

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

Устарело только в документации; поддерживается --pending-deprecation.

Тип: только в документации (поддерживает --pending-deprecation)

process.binding('uv').errname() устарел. Вместо него используйте util.getSystemErrorName().

DEP0120: поддержка счетчиков производительности Windows

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

Снято с эксплуатации.

v11.0.0

Устарело во время выполнения.

Тип: снято с эксплуатации

Поддержка счетчиков производительности Windows удалена из Node.js. Недокументированные функции COUNTER_NET_SERVER_CONNECTION(), COUNTER_NET_SERVER_CONNECTION_CLOSE(), COUNTER_HTTP_SERVER_REQUEST(), COUNTER_HTTP_SERVER_RESPONSE(), COUNTER_HTTP_CLIENT_REQUEST() и COUNTER_HTTP_CLIENT_RESPONSE() объявлены устаревшими.

DEP0121: net._setSimultaneousAccepts()

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

Снято с эксплуатации.

v12.0.0

Устарело во время выполнения.

Тип: снято с эксплуатации

Недокументированная функция net._setSimultaneousAccepts() изначально предназначалась для отладки и настройки производительности при использовании модулей node:child_process и node:cluster в Windows. Эта функция в целом бесполезна и удаляется. Обсуждение доступно здесь: https://github.com/nodejs/node/issues/18391

DEP0122: tls Server.prototype.setOptions()

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

Снято с эксплуатации.

v12.0.0

Устарело во время выполнения.

Тип: снято с эксплуатации

Вместо этого используйте Server.prototype.setSecureContext().

DEP0123: установка TLS ServerName в IP-адрес

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

Устаревание во время выполнения.

Тип: Во время выполнения

Установка TLS ServerName в IP-адрес не разрешена стандартом RFC 6066. В будущей версии это значение будет игнорироваться.

DEP0124: использование REPLServer.rli

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

Конец жизненного цикла.

v12.0.0

Устаревание во время выполнения.

Тип: Конец жизненного цикла

Это свойство является ссылкой на сам экземпляр.

DEP0125: require('node:_stream_wrap')

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

Устаревание во время выполнения.

Тип: Во время выполнения

Модуль node:_stream_wrap устарел.

DEP0126: timers.active()

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

Конец жизненного цикла.

v11.14.0

Устаревание во время выполнения.

Тип: Конец жизненного цикла

Ранее не документированное свойство timers.active() удалено. Вместо него используйте общедоступное документированное свойство timeout.refresh(). Если тайм-аут необходимо повторно привязать, можно использовать timeout.ref() без влияния на производительность начиная с Node.js 10.

DEP0127: timers._unrefActive()

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

Конец жизненного цикла.

v11.14.0

Устаревание во время выполнения.

Тип: Конец жизненного цикла

Ранее не документированное и «приватное» свойство timers._unrefActive() удалено. Вместо него используйте общедоступное документированное свойство timeout.refresh(). Если тайм-аут необходимо отвязать, можно использовать timeout.unref() без влияния на производительность начиная с Node.js 10.

DEP0128: модули с недопустимой точкой входа main и файлом index.js

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

Устаревание во время выполнения.

v12.0.0

Только документация.

Тип: Во время выполнения

Модули с недопустимой точкой входа main (например, ./does-not-exist.js), в корневом каталоге которых также есть файл index.js, разрешат файл index.js. Это поведение устарело и в будущих версиях Node.js приведёт к ошибке.

DEP0129: ChildProcess._channel

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

Устаревание во время выполнения.

v11.14.0

Только документация.

Тип: Во время выполнения

Свойство _channel объектов дочерних процессов, возвращаемых функцией spawn() и аналогичными функциями, не предназначено для публичного использования. Вместо него используйте ChildProcess.channel.

DEP0130: Module.createRequireFromPath()

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

Конец жизненного цикла.

v13.0.0

Устаревание во время выполнения.

v12.2.0

Только документация.

Тип: Конец жизненного цикла

Вместо этого используйте module.createRequire().

Доступна автоматизированная миграция (исходный код):

npx codemod@latest @nodejs/create-require-from-path copy

DEP0131: устаревший HTTP-парсер

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

Эта функция удалена.

v12.22.0

Устаревание во время выполнения.

v12.3.0

Только документация.

Тип: Конец жизненного цикла

Устаревший HTTP-парсер, использовавшийся по умолчанию в версиях Node.js до 12.0.0, объявлен устаревшим и удалён в v13.0.0. До v13.0.0 для возврата к использованию устаревшего парсера можно было использовать флаг командной строки --http-parser=legacy.

DEP0132: worker.terminate() с обратным вызовом

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

Устаревание во время выполнения.

Тип: Во время выполнения

Передача обратного вызова в worker.terminate() устарела. Вместо этого используйте возвращаемый объект Promise или обработчик события 'exit' рабочего потока.

DEP0133: http connection

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

Устаревание только в документации.

Тип: Только документация

Предпочтительно использовать response.socket вместо response.connection, а request.socket вместо request.connection.

DEP0134: process._tickCallback

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

Устаревание только в документации с поддержкой --pending-deprecation.

Тип: Только документация (поддерживается --pending-deprecation)

Свойство process._tickCallback никогда не документировалось как официально поддерживаемый API.

DEP0135: WriteStream.open() и ReadStream.open() являются внутренними

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

Устаревание во время выполнения.

Тип: Во время выполнения

WriteStream.open() и ReadStream.open() — недокументированные внутренние API, использование которых в пользовательском коде не имеет смысла. Файловые потоки всегда следует открывать соответствующими фабричными методами fs.createWriteStream() и fs.createReadStream()) или передавать файловый дескриптор в параметрах.

DEP0136: http finished

История
Версия Изменения
v13.4.0, v12.16.0

Устаревание только в документации.

Тип: Только документация

response.finished указывает, был ли вызван response.end(), а не было ли отправлено событие 'finish' и сброшены ли базовые данные.

Чтобы избежать неоднозначности, вместо этого используйте соответственно response.writableFinished или response.writableEnded.

Для сохранения существующего поведения response.finished следует заменить на response.writableEnded.

DEP0137: закрытие fs.FileHandle при сборке мусора

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

Устаревание во время выполнения.

Тип: Во время выполнения

Закрытие объекта fs.FileHandle при сборке мусора объявлено устаревшим. В будущем это может привести к ошибке, которая завершит процесс.

Убедитесь, что все объекты fs.FileHandle закрываются явным образом с помощью FileHandle.prototype.close(), когда fs.FileHandle больше не нужен:

const fsPromises = require('node:fs').promises;
async function openAndClose() {
  let filehandle;
  try {
    filehandle = await fsPromises.open('thefile.txt', 'r');
  } finally {
    if (filehandle !== undefined)
      await filehandle.close();
  }
} copy

DEP0138: process.mainModule

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

Устаревание только в документации.

Тип: Только документация

process.mainModule — функция только для CommonJS, тогда как глобальный объект process используется и в средах, отличных от CommonJS. Её использование в модулях ECMAScript не поддерживается.

Она устарела в пользу require.main, поскольку служит той же цели и доступна только в среде CommonJS.

Доступна автоматизированная миграция (исходный код):

npx codemod@latest @nodejs/process-main-module copy

DEP0139: process.umask() без аргументов

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

Устаревание только в документации.

Тип: Только документация

Вызов process.umask() без аргумента приводит к двойной записи маски режима создания файлов для всего процесса. Это создаёт состояние гонки между потоками и может представлять угрозу безопасности. Безопасного кроссплатформенного альтернативного API нет.

DEP0140: используйте request.destroy() вместо request.abort()

История
Версия Изменения
v14.1.0, v13.14.0

Устаревание только в документации.

Тип: Только документация

Используйте request.destroy() вместо request.abort().

DEP0141: repl.inputStream и repl.outputStream

История
Версия Изменения
v14.3.0

Устаревание только в документации с поддержкой --pending-deprecation.

Тип: Только документация (поддерживается --pending-deprecation)

Модуль node:repl экспортировал входной и выходной потоки дважды. Используйте .input вместо .inputStream и .output вместо .outputStream.

DEP0142: repl._builtinLibs

История
Версия Изменения
v14.3.0

Устаревание только в документации с поддержкой --pending-deprecation.

Тип: Только документация (поддерживается --pending-deprecation)

Модуль node:repl экспортирует свойство _builtinLibs, содержащее массив встроенных модулей. До сих пор он был неполным, поэтому лучше использовать require('node:module').builtinModules.

Доступна автоматизированная миграция (исходный код):

npx codemod@latest @nodejs/repl-builtin-modules copy

DEP0143: Transform._transformState

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

Конец жизненного цикла.

v14.5.0

Устаревание во время выполнения.

Тип: Конец жизненного цикла

Transform._transformState будет удалён в будущих версиях, поскольку после упрощения реализации он больше не нужен.

DEP0144: module.parent

История
Версия Изменения
v14.6.0, v12.19.0

Устаревание только в документации.

Тип: Только документация (поддерживается --pending-deprecation)

Модуль CommonJS может получить доступ к первому модулю, который его загрузил, с помощью module.parent. Эта функция устарела, поскольку работает непоследовательно при наличии модулей ECMAScript и неточно отражает граф модулей CommonJS.

Некоторые модули используют её, чтобы проверить, являются ли они точкой входа текущего процесса. Вместо этого рекомендуется сравнивать require.main и module:

if (require.main === module) {
  // Code section that will run only if current file is the entry point.
} copy

Чтобы найти модули CommonJS, загрузившие текущий модуль, можно использовать require.cache и module.children:

const moduleParents = Object.values(require.cache)
  .filter((m) => m.children.includes(module)); copy

DEP0145: socket.bufferSize

История
Версия Изменения
v14.6.0

Устаревание только в документации.

Тип: Только документация

socket.bufferSize — это просто псевдоним для writable.writableLength.

DEP0146: new crypto.Certificate()

История
Версия Изменения
v14.9.0

Устаревание только в документации.

Тип: Только документация

Конструктор crypto.Certificate() устарел. Вместо него используйте статические методы crypto.Certificate().

DEP0147: fs.rmdir(path, { recursive: true })

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

Устаревание во время выполнения.

v15.0.0

Устаревание во время выполнения для более снисходительного поведения.

v14.14.0

Устаревание только в документации.

Тип: Во время выполнения

В будущих версиях Node.js параметр recursive будет игнорироваться для fs.rmdir, fs.rmdirSync и fs.promises.rmdir.

Вместо этого используйте fs.rm(path, { recursive: true, force: true }), fs.rmSync(path, { recursive: true, force: true }) или fs.promises.rm(path, { recursive: true, force: true }).

Доступна автоматизированная миграция (исходный код):

npx codemod@latest @nodejs/rmdir copy

DEP0148: сопоставление папок в "exports" (завершающий "/")

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

Конец жизненного цикла.

v16.0.0

Устаревание во время выполнения.

v15.1.0

Устаревание во время выполнения для импортов с самоотсылкой.

v14.13.0

Устаревание только в документации.

Тип: Конец жизненного цикла

Использование завершающего "/" для определения сопоставлений папок подпутей в полях экспорта подпутей или импорта подпутей больше не поддерживается. Вместо этого используйте шаблоны подпутей.

DEP0149: http.IncomingMessage#connection

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

Устаревание только в документации.

Тип: Только документация

Предпочтительно использовать message.socket вместо message.connection.

DEP0150: изменение значения process.config

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

Конец жизненного цикла.

v16.0.0

Устаревание во время выполнения.

Тип: Конец жизненного цикла

Свойство process.config предоставляет доступ к настройкам Node.js, заданным во время компиляции. Однако это свойство изменяемо и поэтому может быть подделано. Возможность изменять его значение будет удалена в будущей версии Node.js.

DEP0151: поиск основного index-файла и по расширениям

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

Устаревание во время выполнения.

v15.8.0, v14.18.0

Устаревание только в документации с поддержкой --pending-deprecation.

Тип: Во время выполнения

Ранее поиск index.js и по расширениям применялся при разрешении основной точки входа import 'pkg', даже при разрешении модулей ES.

В связи с этим устареванием для разрешения всех основных точек входа модулей ES теперь требуется явная запись "exports" или "main" с точным расширением файла.

DEP0152: свойства PerformanceEntry, связанные с расширениями

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

Устаревание во время выполнения.

Тип: Во время выполнения

Объектам типов <PerformanceEntry> 'gc', 'http2' и 'http' назначаются дополнительные свойства, предоставляющие дополнительные сведения. Теперь эти свойства доступны в стандартном свойстве detail объекта PerformanceEntry. Существующие методы доступа объявлены устаревшими и больше не должны использоваться.

DEP0153: преобразование типов параметров dns.lookup и dnsPromises.lookup

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

Конец жизненного цикла.

v17.0.0

Устаревание во время выполнения.

v16.8.0

Устаревание только в документации.

Тип: Конец жизненного цикла

Использование ненулевого целого значения для параметра family, ненулевого значения нечислового типа для параметра hints, ненулевого значения не логического типа для параметра all или ненулевого значения не логического типа для параметра verbatim в dns.lookup() и dnsPromises.lookup() приводит к ошибке ERR_INVALID_ARG_TYPE.

DEP0154: параметры генерации пары ключей RSA-PSS

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

Устаревание во время выполнения.

v16.10.0

Устаревание только в документации.

Тип: Во время выполнения

Параметры 'hash' и 'mgf1Hash' заменены на 'hashAlgorithm' и 'mgf1HashAlgorithm'.

Доступна автоматизированная миграция (исходный код):

npx codemod@latest @nodejs/crypto-rsa-pss-update copy

DEP0155: завершающие косые черты при разрешении спецификаторов шаблонов

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

Устаревание во время выполнения.

v16.10.0

Устаревание только в документации с поддержкой --pending-deprecation.

Тип: Во время выполнения

Переназначение спецификаторов, оканчивающихся на "/", например import 'pkg/x/', устарело для разрешения шаблонов пакетов "exports" и "imports".

DEP0156: свойство .aborted и событие 'abort', 'aborted' в http

История
Версия Изменения
v17.0.0, v16.12.0

Устаревание только в документации.

Тип: Только документация

Вместо этого перейдите на API <Stream>, поскольку http.ClientRequest, http.ServerResponse и http.IncomingMessage основаны на потоках. Проверяйте stream.destroyed вместо свойства .aborted и отслеживайте 'close' вместо события 'abort', 'aborted'.

Свойство .aborted и событие 'abort' полезны только для обнаружения вызовов .abort(). Чтобы досрочно закрыть запрос, используйте .destroy([error]) потока, а затем проверяйте свойство .destroyed; событие 'close' должно дать тот же результат. Принимающая сторона также должна проверять значение readable.readableEnded у http.IncomingMessage, чтобы определить, было ли завершение аварийным или штатным.

DEP0157: поддержка thenable в потоках

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

Конец жизненного цикла.

v17.2.0, v16.14.0

Устаревание только в документации.

Тип: Конец жизненного цикла

Недокументированной особенностью потоков Node.js была поддержка thenable в методах реализации. Теперь это устарело: используйте обратные вызовы и не используйте асинхронные функции в методах реализации потоков.

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

const w = new Writable({
  async final(callback) {
    await someOp();
    callback();
  },
}); copy

DEP0158: buffer.slice(start, end)

История
Версия Изменения
v17.5.0, v16.15.0

Устаревание только в документации.

Тип: Только документация

Этот метод объявлен устаревшим, поскольку он несовместим с Uint8Array.prototype.slice(), суперклассом Buffer.

Вместо него используйте buffer.subarray, который выполняет ту же операцию.

DEP0159: ERR_INVALID_CALLBACK

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

Конец жизненного цикла.

Тип: Конец жизненного цикла

Этот код ошибки удалён, поскольку он только усиливал путаницу среди ошибок проверки типов значений.

DEP0160: process.on('multipleResolves', handler)

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

Устаревание во время выполнения.

v17.6.0, v16.15.0

Устаревание только в документации.

Тип: Во время выполнения

Это событие объявлено устаревшим, поскольку оно не работало с комбинаторами промисов V8, что снижало его полезность.

DEP0161: process._getActiveRequests() и process._getActiveHandles()

История
Версия Изменения
v17.6.0, v16.15.0

Устаревание только в документации.

Тип: Только документация

Функции process._getActiveHandles() и process._getActiveRequests() не предназначены для публичного использования и могут быть удалены в будущих выпусках.

Используйте process.getActiveResourcesInfo(), чтобы получить список типов активных ресурсов, а не сами ссылки на них.

DEP0162: преобразование fs.write(), fs.writeFileSync() в строку

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

Конец жизненного цикла.

v18.0.0

Устаревание во время выполнения.

v17.8.0, v16.15.0

Устаревание только в документации.

Тип: Конец жизненного цикла

Неявное преобразование объектов с собственным свойством toString, передаваемых в качестве второго параметра в fs.write(), fs.writeFile(), fs.appendFile(), fs.writeFileSync() и fs.appendFileSync(), объявлено устаревшим. Преобразуйте их в примитивные строки.

DEP0163: channel.subscribe(onMessage), channel.unsubscribe(onMessage)

История
Версия Изменения
v24.8.0

Устаревание отменено.

v18.7.0, v16.17.0

Устаревание только в документации.

Тип: Устаревание отменено

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

DEP0164: process.exit(code), приведение process.exitCode к целому числу

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

Срок поддержки истёк.

v19.0.0

Устаревание во время выполнения.

v18.10.0, v16.18.0

Устаревание приведения process.exitCode к целому числу только в документации.

v18.7.0, v16.17.0

Устаревание приведения process.exit(code) к целому числу только в документации.

Тип: срок поддержки истёк

Значения, отличные от undefined, null, целых чисел и строк с целыми числами (например, '1'), больше не рекомендуются в качестве значения параметра code в process.exit() и в качестве значения, присваиваемого process.exitCode.

DEP0165: --trace-atomics-wait

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

Срок поддержки истёк.

v22.0.0

Устаревание во время выполнения.

v18.8.0, v16.18.0

Устаревание только в документации.

Тип: срок поддержки истёк

Флаг --trace-atomics-wait удалён, поскольку использует хук V8 SetAtomicsWaitCallback, который будет удалён в одном из будущих выпусков V8.

DEP0166: Двойные косые черты в целях imports и exports

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

Устаревание во время выполнения.

v18.10.0

Устаревание только в документации с поддержкой --pending-deprecation.

Тип: во время выполнения

Сопоставление целей импорта и экспорта пакетов с путями, содержащими двойную косую черту (символ "/" или "\"), больше не рекомендуется и в одном из будущих выпусков завершится ошибкой проверки разрешения. Это же устаревание относится к шаблонам, начинающимся или заканчивающимся косой чертой.

DEP0167: Слабые экземпляры DiffieHellmanGroup (modp1, modp2, modp5)

История
Версия Изменения
v18.10.0, v16.18.0

Устаревание только в документации.

Тип: только в документации

Известные группы MODP modp1, modp2 и modp5 объявлены устаревшими, поскольку не обеспечивают защиту от практических атак. Подробности см. в разделе 2.4 RFC 8247.

Эти группы могут быть удалены в будущих версиях Node.js. Приложениям, использующим эти группы, следует рассмотреть возможность перехода на более надёжные группы MODP.

DEP0168: Необработанное исключение в обратных вызовах Node-API

История
Версия Изменения
v18.3.0, v16.17.0

Устаревание во время выполнения.

Тип: во время выполнения

Неявное подавление неперехваченных исключений в обратных вызовах Node-API объявлено устаревшим.

Установите флаг --force-node-api-uncaught-exceptions-policy, чтобы заставить Node.js генерировать событие 'uncaughtException', если исключение не обработано в обратных вызовах Node-API.

DEP0169: Небезопасный url.parse()

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

Устаревание на уровне приложения.

v19.9.0, v18.17.0

Добавлена поддержка --pending-deprecation.

v19.0.0, v18.13.0

Устаревание только в документации.

Тип: на уровне приложения (только код, не относящийся к node_modules)

Поведение url.parse() не стандартизировано и может приводить к ошибкам, имеющим последствия для безопасности. Вместо него используйте API URL WHATWG. Для уязвимостей url.parse() CVE не присваиваются.

Передача строкового аргумента в url.format() вызывает внутри url.parse(), поэтому на неё также распространяется это устаревание.

DEP0170: Недопустимый порт при использовании url.parse()

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

Устаревание во время выполнения.

v19.2.0, v18.13.0

Устаревание только в документации.

Тип: во время выполнения

url.parse() принимает URL с нечисловыми портами. Такое поведение может привести к подмене имени хоста при неожиданном вводе. В будущих версиях Node.js эти URL будут вызывать ошибку, как это уже происходит при использовании API URL WHATWG.

DEP0171: Сеттеры для заголовков и трейлеров http.IncomingMessage

История
Версия Изменения
v19.3.0, v18.13.0

Устаревание только в документации.

Тип: только в документации

В будущей версии Node.js свойства message.headers, message.headersDistinct, message.trailers и message.trailersDistinct станут доступны только для чтения.

DEP0172: Свойство asyncResource связанных функций AsyncResource

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

Устаревание во время выполнения.

Тип: во время выполнения

В будущей версии Node.js свойство asyncResource больше не будет добавляться, когда функция связывается с AsyncResource.

DEP0173: Класс assert.CallTracker

История
Версия Изменения
v20.1.0

Устаревание во время выполнения.

Тип: во время выполнения

В будущей версии Node.js класс assert.CallTracker будет удалён. Рассмотрите возможность использования альтернатив, например вспомогательной функции mock.

DEP0174: Вызов promisify для функции, возвращающей Promise

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

Устаревание во время выполнения.

v20.8.0

Устаревание только в документации.

Тип: во время выполнения

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

DEP0175: util.toUSVString

История
Версия Изменения
v20.8.0

Устаревание только в документации.

Тип: только в документации

API util.toUSVString() объявлен устаревшим. Вместо него используйте String.prototype.toWellFormed.

DEP0176: fs.F_OK, fs.R_OK, fs.W_OK, fs.X_OK

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

Устаревание во время выполнения.

v20.8.0

Устаревание только в документации.

Тип: во время выполнения

Геттеры F_OK, R_OK, W_OK и X_OK, доступные непосредственно в node:fs, объявлены устаревшими. Вместо них получайте значения из fs.constants или fs.promises.constants.

Доступна автоматическая миграция (исходный код):

npx codemod@latest @nodejs/fs-access-mode-constants copy

DEP0177: util.types.isWebAssemblyCompiledModule

История
Версия Изменения
v21.7.0, v20.12.0

Срок поддержки истёк.

v21.3.0, v20.11.0

Назначен код устаревания.

v14.0.0

Устаревание только в документации.

Тип: срок поддержки истёк

API util.types.isWebAssemblyCompiledModule удалён. Вместо него используйте value instanceof WebAssembly.Module.

DEP0178: dirent.path

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

Срок поддержки истёк.

v23.0.0

Устаревание во время выполнения.

v21.5.0, v20.12.0, v18.20.0

Устаревание только в документации.

Тип: срок поддержки истёк

Свойство dirent.path удалено из-за его непоследовательной работы в разных ветках выпусков. Вместо него используйте dirent.parentPath.

Доступна автоматическая миграция (исходный код):

npx codemod@latest @nodejs/dirent-path-to-parent-path copy

DEP0179: Конструктор Hash

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

Устаревание во время выполнения.

v21.5.0, v20.12.0

Устаревание только в документации.

Тип: во время выполнения

Прямой вызов класса Hash с Hash() или new Hash() объявлен устаревшим, поскольку это внутренние компоненты, не предназначенные для публичного использования. Для создания экземпляров Hash используйте метод crypto.createHash().

DEP0180: Конструктор fs.Stats

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

Устаревание во время выполнения.

v20.13.0

Устаревание только в документации.

Тип: во время выполнения

Прямой вызов класса fs.Stats с Stats() или new Stats() объявлен устаревшим, поскольку это внутренние компоненты, не предназначенные для публичного использования.

DEP0181: Конструктор Hmac

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

Устаревание во время выполнения.

v20.13.0

Устаревание только в документации.

Тип: во время выполнения

Прямой вызов класса Hmac с Hmac() или new Hmac() объявлен устаревшим, поскольку это внутренние компоненты, не предназначенные для публичного использования. Для создания экземпляров Hmac используйте метод crypto.createHmac().

DEP0182: Короткие теги аутентификации GCM без явного указания authTagLength

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

Устаревание во время выполнения.

v20.13.0

Устаревание только в документации.

Тип: во время выполнения

Приложения, которым нужны теги аутентификации короче длины тега по умолчанию, должны установить параметр authTagLength функции crypto.createDecipheriv() в соответствующее значение.

Для шифров в режиме GCM функция decipher.setAuthTag() принимает теги аутентификации любой допустимой длины (см. DEP0090). Это поведение объявлено устаревшим, чтобы привести его в большее соответствие с рекомендациями из NIST SP 800-38D.

DEP0183: API на основе движков OpenSSL

История
Версия Изменения
v22.4.0, v20.16.0

Устаревание только в документации.

Тип: только в документации

В OpenSSL 3 прекращена поддержка пользовательских движков и рекомендуется перейти на новую модель поставщиков. Параметр clientCertEngine для https.request(), tls.createSecureContext() и tls.createServer(); параметры privateKeyEngine и privateKeyIdentifier для tls.createSecureContext(); а также crypto.setEngine() зависят от этой функциональности OpenSSL.

DEP0184: Создание экземпляров классов node:zlib без new

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

Устаревание во время выполнения.

v22.9.0, v20.18.0

Устаревание только в документации.

Тип: во время выполнения

Создание экземпляров классов без квалификатора new, экспортированного модулем node:zlib, объявлено устаревшим. Рекомендуется вместо него использовать квалификатор new. Это относится ко всем классам Zlib, таким как Deflate, DeflateRaw, Gunzip, Inflate, InflateRaw, Unzip и Zlib.

DEP0185: Создание экземпляров классов node:repl без new

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

Устаревание во время выполнения.

v22.9.0, v20.18.0

Устаревание только в документации.

Тип: во время выполнения

Создание экземпляров классов без квалификатора new, экспортированного модулем node:repl, объявлено устаревшим. Рекомендуется вместо него использовать квалификатор new. Это относится ко всем классам REPL, включая REPLServer и Recoverable.

Доступна автоматическая миграция (исходный код):

npx codemod@latest @nodejs/repl-classes-with-new copy

DEP0187: Передача аргументов недопустимых типов в fs.existsSync

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

Устаревание во время выполнения.

v23.4.0, v22.13.0

Только в документации.

Тип: во время выполнения

Передача аргументов неподдерживаемых типов объявлена устаревшей; вместо возврата false в будущей версии будет вызываться ошибка.

DEP0188: process.features.ipv6 и process.features.uv

История
Версия Изменения
v23.4.0, v22.13.0

Устаревание только в документации.

Тип: только в документации

Эти свойства всегда true. Проверки, основанные на этих свойствах, избыточны.

DEP0189: process.features.tls_*

История
Версия Изменения
v23.4.0, v22.13.0

Устаревание только в документации.

Тип: только в документации

Свойства process.features.tls_alpn, process.features.tls_ocsp и process.features.tls_sni объявлены устаревшими, поскольку гарантируется, что их значения совпадают со значением process.features.tls.

DEP0190: Передача args в node:child_process execFile/spawn с параметром shell, установленным в true

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

Устаревание во время выполнения.

v23.11.0, v22.15.0

Устаревание только в документации.

Тип: во время выполнения

Если массив args передан в child_process.execFile или child_process.spawn с параметром { shell: true }, значения не экранируются, а только разделяются пробелами, что может привести к внедрению команд в оболочку.

DEP0191: repl.builtinModules

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

Устаревание только в документации с поддержкой --pending-deprecation.

Тип: только в документации (поддерживает --pending-deprecation)

Модуль node:repl экспортирует свойство builtinModules, содержащее массив встроенных модулей. Этот список был неполным и соответствовал уже объявленному устаревшим свойству repl._builtinLibs (DEP0142); вместо этого лучше полагаться на require('node:module').builtinModules.

Доступна автоматическая миграция (исходный код):

npx codemod@latest @nodejs/repl-builtin-modules copy

DEP0192: require('node:_tls_common') и require('node:_tls_wrap')

История
Версия Изменения
v24.2.0

Устаревание только в документации.

Тип: только в документации

Модули node:_tls_common и node:_tls_wrap объявлены устаревшими, поскольку их следует считать частью внутренней реализации Node.js, а не общедоступным API. Вместо них используйте node:tls.

DEP0193: require('node:_stream_*')

История
Версия Изменения
v24.2.0

Устаревание только в документации.

Тип: только в документации

Модули node:_stream_duplex, node:_stream_passthrough, node:_stream_readable, node:_stream_transform, node:_stream_wrap и node:_stream_writable объявлены устаревшими, поскольку их следует считать частью внутренней реализации Node.js, а не общедоступным API. Вместо них используйте node:stream.

DEP0194: Сигнализация приоритета HTTP/2

История
Версия Изменения
v24.2.0

Срок поддержки истёк.

v24.2.0

Устаревание только в документации.

Тип: срок поддержки истёк

Поддержка сигнализации приоритета удалена после её устаревания в RFC 9113.

DEP0195: Создание экземпляров классов node:http без new

История
Версия Изменения
v24.2.0

Устаревание только в документации.

Тип: только в документации

Создание экземпляров классов без квалификатора new, экспортированного модулем node:http, объявлено устаревшим. Рекомендуется вместо него использовать квалификатор new. Это относится ко всем классам http, таким как OutgoingMessage, IncomingMessage, ServerResponse и ClientRequest.

Доступна автоматическая миграция (исходный код):

npx codemod@latest @nodejs/http-classes-with-new copy

DEP0196: Вызов функций node:child_process с параметром options.shell, заданным как пустая строка

История
Версия Изменения
v24.2.0

Устаревание только в документации.

Тип: только в документации

Вызов функций запуска процессов с { shell: '' } почти наверняка является непреднамеренным и может привести к неправильному поведению.

Чтобы заставить child_process.execFile или child_process.spawn вызывать оболочку по умолчанию, используйте { shell: true }. Если оболочку вызывать не нужно (поведение по умолчанию), либо опустите параметр shell, либо задайте ему значение false или nullish-значение.

Чтобы заставить child_process.exec вызывать оболочку по умолчанию, опустите параметр shell или задайте ему nullish-значение. Если оболочку вызывать не нужно, вместо этого используйте child_process.execFile.

DEP0197: util.types.isNativeError()

История
Версия Изменения
v24.2.0

Устаревание только в документации.

Тип: только в документации

API util.types.isNativeError объявлен устаревшим. Вместо него используйте Error.isError.

Доступна автоматическая миграция (исходный код):

npx codemod@latest @nodejs/types-is-native-error copy

DEP0198: Создание дайджестов SHAKE-128 и SHAKE-256 без явного указания options.outputLength

История
Версия Изменения
v24.4.0

Устаревание только в документации с поддержкой --pending-deprecation.

Тип: только в документации (поддерживает --pending-deprecation)

Создание дайджестов SHAKE-128 и SHAKE-256 без явного указания options.outputLength объявлено устаревшим.

DEP0199: require('node:_http_*')

История
Версия Изменения
v24.6.0

Устаревание только в документации.

Тип: только в документации

Модули node:_http_agent, node:_http_client, node:_http_common, node:_http_incoming, node:_http_outgoing и node:_http_server объявлены устаревшими, поскольку их следует считать частью внутренней реализации Node.js, а не общедоступным API. Вместо них используйте node:http.

DEP0200: Закрытие fs.Dir при сборке мусора

История
Версия Изменения
v24.9.0

Устаревание только в документации.

Тип: только в документации

Возможность закрытия объекта fs.Dir при сборке мусора объявлена устаревшей. В будущем это может привести к выбрасыванию ошибки, которая завершит процесс.

Обязательно явно закрывайте все объекты fs.Dir с помощью Dir.prototype.close() или ключевого слова using:

import { opendir } from 'node:fs/promises';

{
  await using dir = await opendir('/async/disposable/directory');
} // Closed by dir[Symbol.asyncDispose]()

{
  using dir = await opendir('/sync/disposable/directory');
} // Closed by dir[Symbol.dispose]()

{
  const dir = await opendir('/unconditionally/iterated/directory');
  for await (const entry of dir) {
    // process an entry
  } // Closed by iterator
}

{
  let dir;
  try {
    dir = await opendir('/legacy/closeable/directory');
  } finally {
    await dir?.close();
  }
} copy

© 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-v24.x/docs/api/deprecations.html

Spec-Zone.ru

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