Spec-Zone.ru › Node.js 20 LTS

Устаревшие API

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

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

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

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

Устаревание только в документации — это устаревание, о котором сообщается только в документации API 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

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

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

В методах spawn(), fork() и exec() модуля child_process параметр 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 v11.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: устаревший строковый интерфейс fs.read

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

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

v6.0.0

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

v6.12.0, v4.8.6

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

v0.1.96

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

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

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

DEP0015: устаревший строковый интерфейс 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 v0.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().

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

DEP0027: util.puts()

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

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

v6.12.0, v4.8.6

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

v0.11.3

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

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

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

DEP0028: util.debug()

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

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

v6.12.0, v4.8.6

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

v0.11.3

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

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

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

DEP0029: util.error()

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

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

v6.12.0, v4.8.6

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

v0.11.3

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

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

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

DEP0030: SlowBuffer

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

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

v6.0.0

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

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

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

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

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

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

v3.2.0

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

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

API events.listenerCount(emitter, eventName) устарел. Вместо него используйте emitter.listenerCount(eventName).

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) устарел. Устаревание было отменено, поскольку в libuv добавили необходимые поддерживающие API.

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

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

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

v6.12.0, v4.8.6

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

v0.4.7

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

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

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

DEP0039: require.extensions

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

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

v0.10.6

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

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

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

DEP0040: модуль node:punycode

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

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

v7.0.0

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

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

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

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

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

v6.12.0

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

v6.0.0

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

v0.11.15

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

v0.11.3

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

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

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

DEP0044: util.isArray()

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

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

v4.0.0, v3.3.1

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

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

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

DEP0045: util.isBoolean()

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

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

v4.0.0, v3.3.1

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

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

API util.isBoolean() устарел.

DEP0046: util.isBuffer()

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

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

v4.0.0, v3.3.1

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

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

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

DEP0047: util.isDate()

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

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

v4.0.0, v3.3.1

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

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

API util.isDate() устарел.

DEP0048: util.isError()

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

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

v4.0.0, v3.3.1

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

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

API util.isError() устарел.

DEP0049: util.isFunction()

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

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

v4.0.0, v3.3.1

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

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

API util.isFunction() устарел.

DEP0050: util.isNull()

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

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

v4.0.0, v3.3.1

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

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

API util.isNull() устарел.

DEP0051: util.isNullOrUndefined()

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

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

v4.0.0, v3.3.1

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

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

API util.isNullOrUndefined() устарел.

DEP0052: util.isNumber()

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

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

v4.0.0, v3.3.1

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

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

API util.isNumber() устарел.

DEP0053: util.isObject()

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

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

v4.0.0, v3.3.1

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

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

API util.isObject() устарел.

DEP0054: util.isPrimitive()

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

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

v4.0.0, v3.3.1

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

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

API util.isPrimitive() устарел.

DEP0055: util.isRegExp()

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

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

v4.0.0, v3.3.1

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

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

API util.isRegExp() устарел.

DEP0056: util.isString()

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

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

v4.0.0, v3.3.1

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

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

API util.isString() устарел.

DEP0057: util.isSymbol()

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

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

v4.0.0, v3.3.1

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

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

API util.isSymbol() устарел.

DEP0058: util.isUndefined()

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

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

v4.0.0, v3.3.1

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

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

API util.isUndefined() устарел.

DEP0059: util.log()

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

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

v6.0.0

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

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

API util.log() устарел.

DEP0060: util._extend()

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

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

v6.0.0

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

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

API util._extend() устарел.

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

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

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

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

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

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

DEP0064: tls.createSecurePair()

История
Версия Изменения
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

История
Версия Изменения
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 никогда не документировались как официально поддерживаемые свойства.

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() — простая вспомогательная функция для разбора, которая по ошибке стала общедоступной. Она должна была разбирать строки субъекта и издателя сертификата, но никогда не обрабатывала многозначные относительные различительные имена (Relative Distinguished Names) должным образом.

В предыдущих версиях этого документа предлагалось использовать 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() с использованием дескриптора файла

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

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

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

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

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 устарел и заменён

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

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

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

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

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

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

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

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

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

DEP0095: timers.enroll()

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

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

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

timers.enroll() устарел. Вместо него используйте публично документированный метод setTimeout() или setInterval().

DEP0096: timers.unenroll()

История
Версия Изменения
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()

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

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

v0.3.7

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

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

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

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

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)

При присваивании свойству, не являющемуся строкой, объекта 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

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

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

v10.0.0

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

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

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

DEP0107: tls.convertNPNProtocols()

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

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

v10.0.0

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

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

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

DEP0108: zlib.bytesRead

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

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

v10.0.0

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

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

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

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 теперь используют парсер WHATWG URL, требующий строго корректных 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.

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)

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

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

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

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

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

DEP0122: tls Server.prototype.setOptions()

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

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

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

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

DEP0123: задание IP-адреса в качестве TLS ServerName

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

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

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

Задание IP-адреса в качестве TLS ServerName запрещено стандартом 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()

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

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

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

Ранее недокументированный timers.active() устарел. Вместо него используйте публично документированный timeout.refresh(). Если необходимо повторно установить ссылку на тайм-аут, можно использовать timeout.ref() без влияния на производительность начиная с Node.js 10.

DEP0127: timers._unrefActive()

История
Версия Изменения
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().

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)

Свойство 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.

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][]).

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

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

DEP0143: Transform._transformState

История
Версия Изменения
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 }).

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: поиск основного индекса и поиск расширений

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

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

v15.8.0, v14.18.0

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

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

Ранее при разрешении основного модуля ES поиск 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'.

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)

История
Версия Изменения
v18.7.0, v16.17.0

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

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

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

Вместо них используйте diagnostics_channel.subscribe(name, onMessage) или diagnostics_channel.unsubscribe(name, onMessage), выполняющие то же действие.

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

История
Версия Изменения
v18.8.0, v16.18.0

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

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

Флаг --trace-atomics-wait устарел.

DEP0166: двойные косые черты в целях импорта и экспорта

История
Версия Изменения
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()

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

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

v19.0.0, v18.13.0

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

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

Поведение url.parse() не стандартизировано и подвержено ошибкам, которые могут иметь последствия для безопасности. Вместо него используйте API URL WHATWG. CVE не присваиваются уязвимостям 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

История
Версия Изменения
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

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

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

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

Геттеры F_OK, R_OK, W_OK и X_OK, доступные непосредственно в node:fs, устарели. Вместо этого получайте их из fs.constants или fs.promises.constants.

DEP0177: util.types.isWebAssemblyCompiledModule

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

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

v20.11.0

Присвоен код устаревания.

v14.0.0

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

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

API util.types.isWebAssemblyCompiledModule удален. Вместо него используйте value instanceof WebAssembly.Module.

DEP0178: dirent.path

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

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

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

dirent.path устарел из-за непоследовательности между ветками выпусков. Вместо него используйте dirent.parentPath.

DEP0179: конструктор Hash

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

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

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

Прямой вызов класса Hash с Hash() или new Hash() устарел, поскольку это внутренние компоненты, не предназначенные для публичного использования. Для создания экземпляров Hash используйте метод crypto.createHash().

DEP0180: конструктор fs.Stats

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

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

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

Прямой вызов класса fs.Stats с Stats() или new Stats() устарел, поскольку это внутренние компоненты, не предназначенные для публичного использования.

DEP0181: конструктор Hmac

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

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

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

Прямой вызов класса Hmac с помощью Hmac() или new Hmac() считается устаревшим, поскольку это внутренние компоненты, не предназначенные для публичного использования. Для создания экземпляров Hmac используйте метод crypto.createHmac().

DEP0182: Короткие теги аутентификации GCM без явного authTagLength

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

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

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

Приложениям, которым нужны теги аутентификации короче длины тега аутентификации по умолчанию, следует задать параметру authTagLength функции crypto.createDecipheriv() соответствующую длину.

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

DEP0183: API на основе движков OpenSSL

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

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

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

В OpenSSL 3 объявлена устаревшей поддержка пользовательских движков с рекомендацией перейти на новую модель провайдеров. Параметр clientCertEngine для https.request(), tls.createSecureContext() и tls.createServer(); параметры privateKeyEngine и privateKeyIdentifier для tls.createSecureContext(); а также crypto.setEngine() — всё это зависит от данной функциональности OpenSSL.

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

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

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

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

Создание экземпляров классов без квалификатора new, экспортируемого модулем node:zlib, объявлено устаревшим. Рекомендуется использовать вместо него квалификатор new. Это относится ко всем классам Zlib, таким как Deflate, DeflateRaw, Gunzip, Inflate, InflateRaw, Unzip и Zlib.

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

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

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

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

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

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

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

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

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

Передача неподдерживаемых типов аргументов объявлена устаревшей. Вместо возврата false в будущей версии будет выбрасываться ошибка.

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

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

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

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

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

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

Spec-Zone.ru

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