Spec-Zone.ru › Node.js

Устаревшие 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

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

Тип: прекращение поддержки

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

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

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

Прекращение поддержки.

v7.0.0

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

v6.12.0

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

v6.0.0

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

Тип: прекращение поддержки

В одной из ранних версий кластера Node.js cluster объекту 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.12.0, v4.8.6

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

v6.0.0

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

v0.1.96

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

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

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

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

Прекращение поддержки.

v6.12.0, v4.8.6

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

v6.0.0

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

v0.1.96

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

Устаревший интерфейс String API 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
bashcopy

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
bashcopy

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
bashcopy

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
bashcopy

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
bashcopy

DEP0030: SlowBuffer

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

Прекращение поддержки.

v24.0.0

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

v6.12.0

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

v6.0.0

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

Тип: прекращение поддержки

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

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

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

DEP0031: ecdh.setPublicKey()

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

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

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()

История
Версия Изменения
v25.4.0, 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 модуль

История
Версия Изменения
v23.7.0, v22.14.0

Устаревание на уровне приложения.

v21.0.0

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

v16.6.0

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

v7.0.0

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

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

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

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
bashcopy

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
bashcopy

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
bashcopy

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
bashcopy

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
bashcopy

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
bashcopy

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
bashcopy

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
bashcopy

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
bashcopy

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
bashcopy

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
bashcopy

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
bashcopy

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
bashcopy

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
bashcopy

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
bashcopy

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
bashcopy

DEP0061: fs.SyncWriteStream

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

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

v8.0.0

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

v7.0.0

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

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

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

DEP0062: node --debug

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

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

v8.0.0

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

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

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

DEP0063: ServerResponse.prototype.writeHeader()

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

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

v25.0.0

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

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

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

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

API tls.createSecurePair() был объявлен устаревшим в документации Node.js 0.11.3. Пользователям следует использовать 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
bashcopy

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 соответствует устаревшему отладчику командной строки, который был заменён отладчиком командной строки на основе инспектора 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 не был задокументирован и обычно не представлял ценности для кода вне внутренних компонентов, замещающий 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()

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

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

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
bashcopy

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
bashcopy

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

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

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

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
bashcopy

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
bashcopy

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

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

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

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

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

DEP0169 распространяется также на url.format() и url.resolve().

v19.0.0, v18.13.0

В DEP0169 повторно объявлено устаревание url.parse().

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
bashcopy

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

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

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

v11.0.0

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

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

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

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

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

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

v11.0.0

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

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

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

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: Указание IP-адреса в качестве имени сервера TLS

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

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

v12.0.0

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

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

Указывать IP-адрес в качестве имени сервера TLS запрещено согласно RFC 6066.

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

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

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

v12.0.0

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

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

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

DEP0125: require('node:_stream_wrap')

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

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

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

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

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

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
bashcopy

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() с функцией обратного вызова

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

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

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() являются внутренними

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

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

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 при сборке мусора

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

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

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();
  }
}
jscopy

DEP0138: process.mainModule

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

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

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

process.mainModule доступен только в CommonJS, тогда как глобальный объект process используется и в средах без CommonJS. Его использование в модулях ECMAScript не поддерживается.

Вместо него рекомендуется использовать require.main, поскольку он выполняет ту же задачу и доступен только в среде CommonJS.

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

npx codemod@latest @nodejs/process-main-module
bashcopy

DEP0139: Вызов process.umask() без аргументов

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

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

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

Вызов process.umask() без аргумента приводит к двойной записи маски 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
bashcopy

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.
}
jscopy

Чтобы найти модули CommonJS, которые запросили текущий модуль, можно использовать require.cache и module.children:

const moduleParents = Object.values(require.cache)
  .filter((m) => m.children.includes(module));
jscopy

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 })

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

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

v16.0.0

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

v15.0.0

Устаревание во время выполнения для разрешительного поведения.

v14.14.0

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

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

Методы fs.rmdir, fs.rmdirSync и fs.promises.rmdir поддерживали параметр recursive. Этот параметр удален.

Вместо них используйте 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
bashcopy

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 для расширений

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

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

v16.0.0

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

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

Объектам типа 'gc', 'http2' и 'http' <PerformanceEntry> ранее назначались дополнительные свойства с дополнительной информацией. Теперь эти свойства доступны через стандартное свойство 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

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

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

v20.0.0

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

v16.10.0

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

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

Используйте 'hashAlgorithm' вместо 'hash', а 'mgf1HashAlgorithm' вместо 'mgf1Hash'.

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

npx codemod@latest @nodejs/crypto-rsa-pss-update
bashcopy

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 основаны на потоках. Вместо свойства .aborted проверяйте stream.destroyed, а вместо события 'abort', 'aborted' прослушивайте событие 'close'.

Свойство .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 в методах реализации. Теперь она устарела: вместо этого используйте обратные вызовы и избегайте async-функций в методах реализации потоков.

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

const w = new Writable({
  async final(callback) {
    await someOp();
    callback();
  },
});
jscopy

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)

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

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

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, v22.20.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.

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

Сопоставление целей imports и exports пакета с путями, содержащими двойную косую черту ("/" или "\"), признано устаревшим и в будущем приведёт к ошибке проверки разрешения. Это же устаревание касается шаблонных совпадений, начинающихся или заканчивающихся косой чертой.

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. CVE не присваиваются уязвимостям url.parse().

Вызов url.format(urlString) или url.resolve() внутри вызывает url.parse(), поэтому на него также распространяется это устаревание.

DEP0170: Недопустимый порт при использовании url.parse()

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

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

v20.0.0

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

v19.2.0, v18.13.0

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

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

Раньше url.parse() принимал URL с нечисловыми портами. Это поведение может привести к подмене имени узла при неожиданном вводе. Такие 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

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

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

v20.0.0

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

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

В старых версиях Node.js свойство asyncResource добавлялось, когда функция привязывалась к AsyncResource. Теперь этого не происходит.

DEP0173: класс assert.CallTracker

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

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

v20.1.0

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

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

API assert.CallTracker удалён.

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

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

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

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
bashcopy

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
bashcopy

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

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

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

v23.0.0

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

v20.13.0

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

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

Для шифров в режиме GCM функция decipher.setAuthTag() ранее принимала теги аутентификации любой допустимой длины (см. также DEP0090). Это исключение удалено, чтобы обеспечить лучшее соответствие рекомендациям NIST SP 800-38D. Приложения, которым нужны теги аутентификации короче длины по умолчанию (то есть короче 16 байт для AES-GCM), должны явно задать параметру authTagLength функции crypto.createDecipheriv() соответствующую длину.

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

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

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

v24.0.0

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

v22.9.0, v20.18.0

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

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

Создание экземпляров классов без квалификатора new, экспортируемого модулем node:repl, признано устаревшим. Вместо него необходимо использовать квалификатор new. Это относится ко всем классам REPL, включая REPLServer и Recoverable.

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

npx codemod@latest @nodejs/repl-classes-with-new
bashcopy

DEP0187: Передача аргументов недопустимых типов в fs.existsSync

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

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

v23.4.0, v22.13.0, v20.19.3

Только документация.

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

Передача неподдерживаемых типов аргументов признана устаревшей; вместо возврата 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

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

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

v23.11.0, v22.15.0

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

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

Если массив args передан в child_process.execFile или child_process.spawn с параметром { shell: true } или { shell: '/path/to/shell' }, значения не экранируются, а только разделяются пробелами, что может привести к внедрению команд оболочки.

DEP0191: repl.builtinModules

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

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

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

Модуль node:repl экспортирует свойство builtinModules, содержащее массив встроенных модулей. Этот список был неполным и соответствовал уже устаревшему repl._builtinLibs (DEP0142); вместо этого лучше использовать require('node:module').builtinModules.

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

npx codemod@latest @nodejs/repl-builtin-modules
bashcopy

DEP0192: require('node:_tls_common') и require('node:_tls_wrap')

История
Версия Изменения
v24.2.0, v22.17.0, v20.19.6

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

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

Модули node:_tls_common и node:_tls_wrap признаны устаревшими, поскольку их следует считать внутренней реализацией Node.js, а не публичным API. Вместо них используйте node:tls.

DEP0193: require('node:_stream_*')

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

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

v24.2.0, v22.17.0, v20.19.6

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

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

Модули 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, v22.17.0, v20.19.6

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

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

Поддержка сигнализации приоритета удалена после её устаревания в RFC 9113.

DEP0195: Создание экземпляров классов node:http без new

История
Версия Изменения
v24.2.0, v22.17.0

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

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

Создание экземпляров классов без квалификатора new, экспортируемого модулем node:http, признано устаревшим. Рекомендуется вместо него использовать квалификатор new. Это относится ко всем классам http, например OutgoingMessage, IncomingMessage, ServerResponse и ClientRequest.

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

npx codemod@latest @nodejs/http-classes-with-new
bashcopy

DEP0196: Вызов функций node:child_process с options.shell в виде пустой строки

История
Версия Изменения
v24.2.0, v22.17.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
bashcopy

DEP0198: Создание дайджестов SHAKE-128 и SHAKE-256 без явного указания options.outputLength

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

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

v24.4.0, v22.18.0, v20.19.5

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

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

Создание дайджестов SHAKE-128 и SHAKE-256 без явного указания options.outputLength объявлено устаревшим.

DEP0199: require('node:_http_*')

История
Версия Изменения
v24.6.0, v22.19.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();
  }
}
mjscopy

DEP0201: Передача options.type в Duplex.toWeb()

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

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

v25.7.0

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

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

Передача параметра type в Duplex.toWeb() объявлена устаревшей. Чтобы указать тип читаемой стороны создаваемой пары для чтения и записи, используйте вместо этого параметр readableType.

DEP0202: Параметры Http1IncomingMessage и Http1ServerResponse HTTP/2-серверов

История
Версия Изменения
v25.7.0

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

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

Параметры Http1IncomingMessage и Http1ServerResponse функций http2.createServer() и http2.createSecureServer() объявлены устаревшими. Вместо них используйте http1Options.IncomingMessage и http1Options.ServerResponse.

// Deprecated
const server = http2.createSecureServer({
  allowHTTP1: true,
  Http1IncomingMessage: MyIncomingMessage,
  Http1ServerResponse: MyServerResponse,
});
cjscopy
// Use this instead
const server = http2.createSecureServer({
  allowHTTP1: true,
  http1Options: {
    IncomingMessage: MyIncomingMessage,
    ServerResponse: MyServerResponse,
  },
});
cjscopy

DEP0203: Передача CryptoKey в API node:crypto

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

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

v25.9.0

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

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

Передача CryptoKey в функции node:crypto объявлена устаревшей и в будущей версии приведёт к выбросу ошибки. Это относится к crypto.createPublicKey(), crypto.createPrivateKey(), crypto.sign(), crypto.verify(), crypto.publicEncrypt(), crypto.publicDecrypt(), crypto.privateEncrypt(), crypto.privateDecrypt(), Sign.prototype.sign(), Verify.prototype.verify(), crypto.createHmac(), crypto.createCipheriv(), crypto.createDecipheriv(), crypto.encapsulate() и crypto.decapsulate().

DEP0204: KeyObject.from() с неизвлекаемым CryptoKey

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

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

v25.9.0

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

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

Передача неизвлекаемого CryptoKey в KeyObject.from() объявлена устаревшей и в будущей версии приведёт к выбросу ошибки.

DEP0205: module.register()

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

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

v25.9.0

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

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

module.register() объявлен устаревшим. Вместо него используйте module.registerHooks().

API module.register() предоставляет асинхронные хуки, выполняемые вне основного потока, для настройки модулей ES; API module.registerHooks() предоставляет аналогичные хуки, которые являются синхронными, выполняются в основном потоке и работают со всеми типами модулей. Поддержка асинхронных хуков оказалась сложной задачей, требующей координации потоков-воркеров; также обнаружены проблемы, которые не удалось решить. См. ограничения асинхронных хуков настройки. Как можно скорее перейдите на module.registerHooks(), поскольку module.register() будет удалён в будущей версии Node.js.

DEP0206: Вызов digest() для уже финализированного экземпляра Hmac

История
Версия Изменения
v26.2.0

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

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

Повторный вызов hmac.digest() возвращает пустой буфер вместо выброса ошибки. Такое поведение не согласуется с hash.digest() и может привести к труднообнаружимым ошибкам. Вызов hmac.digest() для финализированного экземпляра Hmac в будущей версии приведёт к выбросу ошибки.

© 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/api/deprecations.html

Spec-Zone.ru

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