Устаревшие API
API Node.js могут быть объявлены устаревшими по любой из следующих причин:
- Использование API небезопасно.
- Доступен улучшенный альтернативный API.
- В будущей основной версии ожидаются несовместимые изменения API.
В Node.js используются четыре вида устаревания:
- Только в документации
- Для приложений (только код, не относящийся к
node_modules) - В среде выполнения (весь код)
- Окончательное удаление
Устаревание, отмеченное только в документации, указывается исключительно в документации по API Node.js. Оно не вызывает побочных эффектов при работе Node.js. Некоторые устаревшие API, отмеченные только в документации, при запуске с флагом --pending-deprecation (или его альтернативой — переменной окружения NODE_PENDING_DEPRECATION=1) вызывают предупреждение во время выполнения, аналогично устаревшим API, вызывающим предупреждения во время выполнения, описанным ниже. Устаревшие API, отмеченные только в документации и поддерживающие этот флаг, явно помечены в списке устаревших API.
Устаревание API для приложений, затрагивающее только код, не относящийся к node_modules, по умолчанию генерирует предупреждение процесса, которое выводится в stderr при первом использовании устаревшего API в коде, загруженном не из node_modules. При использовании флага командной строки --throw-deprecation устаревание API во время выполнения приводит к выбросу ошибки. При использовании --pending-deprecation предупреждения также выводятся для кода, загруженного из node_modules.
Устаревание API во время выполнения, затрагивающее весь код, аналогично устареванию API во время выполнения для кода, не относящегося к node_modules, за исключением того, что оно также вызывает предупреждение для кода, загруженного из node_modules.
Устаревание с окончательным удалением применяется, когда функциональность удаляется или вскоре будет удалена из Node.js.
Отмена устаревания
Иногда устаревание API может быть отменено. В таких случаях этот документ будет обновлён соответствующей информацией о принятом решении. Однако идентификатор устаревания изменён не будет.
Список устаревших API
DEP0001: http.OutgoingMessage.prototype.flush
Тип: Снято с эксплуатации
OutgoingMessage.prototype.flush() удалён. Вместо него используйте OutgoingMessage.prototype.flushHeaders().
DEP0002: require('_linklist')
Тип: Снято с эксплуатации
Модуль _linklist устарел. Используйте альтернативу из пользовательской экосистемы.
DEP0003: _writableState.buffer
Тип: Снято с эксплуатации
_writableState.buffer удалён. Вместо него используйте _writableState.getBuffer().
DEP0004: CryptoStream.prototype.readyState
Тип: Снято с эксплуатации
Свойство CryptoStream.prototype.readyState удалено.
DEP0005: конструктор Buffer()
Тип: Для приложения (только код, не 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
Тип: Снято с эксплуатации
В методах child_process, spawn(), fork() и exec() модуля параметр options.customFds устарел. Вместо него следует использовать параметр options.stdio.
DEP0007: Замените cluster worker.suicide на worker.exitedAfterDisconnect
Тип: Снято с эксплуатации
В одной из предыдущих версий cluster Node.js в объект Worker было добавлено логическое свойство с именем suicide. Это свойство предназначалось для указания того, как и почему завершил работу экземпляр Worker. В Node.js 6.0.0 старое свойство устарело и было заменено новым свойством worker.exitedAfterDisconnect. Прежнее имя свойства неточно описывало его фактическую семантику и имело излишне эмоциональную окраску.
DEP0008: require('node:constants')
Тип: Устаревание только в документации
Модуль node:constants устарел. Чтобы получить доступ к константам, относящимся к определённым встроенным модулям Node.js, разработчикам следует обращаться к свойству constants, доступному в соответствующем модуле. Например, require('node:fs').constants и require('node:os').constants.
DEP0009: crypto.pbkdf2 без дайджеста
Тип: Снято с эксплуатации
Использование 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
Тип: Снято с эксплуатации
API crypto.createCredentials() удалён. Вместо него используйте tls.createSecureContext().
DEP0011: crypto.Credentials
Тип: Снято с эксплуатации
Класс crypto.Credentials удалён. Вместо него используйте tls.SecureContext.
DEP0012: Domain.dispose
Тип: Снято с эксплуатации
Domain.dispose() удалён. Явно обрабатывайте ошибки ввода-вывода, назначая обработчики событий ошибок для домена.
DEP0013: асинхронная функция fs без функции обратного вызова
Тип: Снято с эксплуатации
Начиная с Node.js 10.0.0 вызов асинхронной функции без функции обратного вызова приводит к выбросу исключения TypeError. См. https://github.com/nodejs/node/pull/12562.
DEP0014: устаревший строковый интерфейс fs.read
Тип: Снято с эксплуатации
Устаревший интерфейс String метода fs.read() признан устаревшим. Вместо него используйте API Buffer, как указано в документации.
DEP0015: устаревший строковый интерфейс fs.readSync
Тип: Снято с эксплуатации
Устаревший интерфейс String метода fs.readSync() признан устаревшим. Вместо него используйте API Buffer, как указано в документации.
DEP0016: GLOBAL/root
Тип: Снято с эксплуатации
Псевдонимы GLOBAL и root свойства global были признаны устаревшими в Node.js 6.0.0 и впоследствии удалены.
DEP0017: Intl.v8BreakIterator
Тип: Снято с эксплуатации
Intl.v8BreakIterator было нестандартным расширением и удалено. См. Intl.Segmenter.
DEP0018: Необработанные отклонения промисов
Тип: Снято с эксплуатации
Необработанные отклонения промисов признаны устаревшими. По умолчанию необработанные отклонения промисов завершают процесс Node.js с ненулевым кодом выхода. Чтобы изменить обработку необработанных отклонений в Node.js, используйте параметр командной строки --unhandled-rejections.
DEP0019: require('.') разрешался за пределами каталога
Тип: Снято с эксплуатации
В некоторых случаях require('.') мог разрешаться за пределами каталога пакета. Это поведение удалено.
DEP0020: Server.connections
Тип: Снято с эксплуатации
Свойство Server.connections было объявлено устаревшим в Node.js v0.9.7 и удалено. Вместо него используйте метод Server.getConnections().
DEP0021: Server.listenFD
Тип: Снято с эксплуатации
Метод Server.listenFD() был объявлен устаревшим и удален. Вместо него используйте Server.listen({fd: <number>}).
DEP0022: os.tmpDir()
Тип: Снято с эксплуатации
API os.tmpDir() было объявлено устаревшим в Node.js 7.0.0 и впоследствии удалено. Вместо него используйте os.tmpdir().
DEP0023: os.getNetworkInterfaces()
Тип: Снято с эксплуатации
Метод os.getNetworkInterfaces() объявлен устаревшим. Вместо него используйте метод os.networkInterfaces().
DEP0024: REPLServer.prototype.convertToContext()
Тип: Снято с эксплуатации
API REPLServer.prototype.convertToContext() удален.
DEP0025: require('node:sys')
Тип: Среда выполнения
Модуль node:sys объявлен устаревшим. Вместо него используйте модуль util.
DEP0026: util.print()
Тип: Снято с эксплуатации
util.print() удален. Вместо него используйте console.log().
DEP0027: util.puts()
Тип: Снято с эксплуатации
util.puts() удален. Вместо него используйте console.log().
DEP0028: util.debug()
Тип: Снято с эксплуатации
util.debug() удален. Вместо него используйте console.error().
DEP0029: util.error()
Тип: Снято с эксплуатации
util.error() удален. Вместо него используйте console.error().
DEP0030: SlowBuffer
Тип: Только в документации
Класс SlowBuffer объявлен устаревшим. Вместо него используйте Buffer.allocUnsafeSlow(size).
DEP0031: ecdh.setPublicKey()
Тип: Только в документации
Метод ecdh.setPublicKey() объявлен устаревшим, поскольку его наличие в API не приносит пользы.
DEP0032: модуль node:domain
Тип: Только в документации
Модуль domain объявлен устаревшим и не должен использоваться.
DEP0033: EventEmitter.listenerCount()
Тип: Только в документации
API events.listenerCount(emitter, eventName) объявлен устаревшим. Вместо него используйте emitter.listenerCount(eventName).
DEP0034: fs.exists(path, callback)
Тип: Только в документации
API fs.exists(path, callback) объявлен устаревшим. Вместо него используйте fs.stat() или fs.access().
DEP0035: fs.lchmod(path, mode, callback)
Тип: Только в документации
API fs.lchmod(path, mode, callback) объявлен устаревшим.
DEP0036: fs.lchmodSync(path, mode)
Тип: Только в документации
API fs.lchmodSync(path, mode) объявлен устаревшим.
DEP0037: fs.lchown(path, uid, gid, callback)
Тип: Устаревание отменено
API fs.lchown(path, uid, gid, callback) был объявлен устаревшим. Устаревание отменили, поскольку необходимые вспомогательные API были добавлены в libuv.
DEP0038: fs.lchownSync(path, uid, gid)
Тип: Устаревание отменено
API fs.lchownSync(path, uid, gid) был объявлен устаревшим. Устаревание отменили, поскольку необходимые вспомогательные API были добавлены в libuv.
DEP0039: require.extensions
Тип: Только в документации
Свойство require.extensions объявлено устаревшим.
DEP0040: модуль node:punycode
Тип: Среда выполнения
Модуль punycode объявлен устаревшим. Вместо него используйте альтернативную реализацию из пользовательского пространства.
DEP0041: переменная окружения NODE_REPL_HISTORY_FILE
Тип: Снято с эксплуатации
Переменная окружения NODE_REPL_HISTORY_FILE удалена. Вместо нее используйте NODE_REPL_HISTORY.
DEP0042: tls.CryptoStream
Тип: Снято с эксплуатации
Класс tls.CryptoStream удален. Вместо него используйте tls.TLSSocket.
DEP0043: tls.SecurePair
Тип: только документация
Класс tls.SecurePair устарел. Вместо него используйте tls.TLSSocket.
DEP0044: util.isArray()
Тип: во время выполнения
API util.isArray() устарел. Вместо него используйте Array.isArray().
DEP0045: util.isBoolean()
Тип: во время выполнения
API util.isBoolean() устарел. Вместо него используйте typeof arg === 'boolean'.
DEP0046: util.isBuffer()
Тип: во время выполнения
API util.isBuffer() устарел. Вместо него используйте Buffer.isBuffer().
DEP0047: util.isDate()
Тип: во время выполнения
API util.isDate() устарел. Вместо него используйте arg instanceof Date.
DEP0048: util.isError()
Тип: во время выполнения
API util.isError() устарел. Вместо него используйте Object.prototype.toString(arg) === '[object Error]' || arg instanceof Error.
DEP0049: util.isFunction()
Тип: во время выполнения
API util.isFunction() устарел. Вместо него используйте typeof arg === 'function'.
DEP0050: util.isNull()
Тип: во время выполнения
API util.isNull() устарел. Вместо него используйте arg === null.
DEP0051: util.isNullOrUndefined()
Тип: во время выполнения
API util.isNullOrUndefined() устарел. Вместо него используйте arg === null || arg === undefined.
DEP0052: util.isNumber()
Тип: во время выполнения
API util.isNumber() устарел. Вместо него используйте typeof arg === 'number'.
DEP0053: util.isObject()
Тип: во время выполнения
API util.isObject() устарел. Вместо него используйте arg && typeof arg === 'object'.
DEP0054: util.isPrimitive()
Тип: во время выполнения
API util.isPrimitive() устарел. Вместо него используйте arg === null || (typeof arg !=='object' && typeof arg !== 'function').
DEP0055: util.isRegExp()
Тип: во время выполнения
API util.isRegExp() устарел. Вместо него используйте arg instanceof RegExp.
DEP0056: util.isString()
Тип: во время выполнения
API util.isString() устарел. Вместо него используйте typeof arg === 'string'.
DEP0057: util.isSymbol()
Тип: во время выполнения
API util.isSymbol() устарел. Вместо него используйте typeof arg === 'symbol'.
DEP0058: util.isUndefined()
Тип: во время выполнения
API util.isUndefined() устарел. Вместо него используйте arg === undefined.
DEP0059: util.log()
Тип: во время выполнения
API util.log() устарел, поскольку это неподдерживаемый устаревший API, который случайно стал доступен пользовательскому коду. В зависимости от ваших потребностей рассмотрите следующие альтернативы:
-
Сторонние библиотеки для ведения журналов
-
Используйте
console.log(new Date().toLocaleString(), message)
Выбрав одну из этих альтернатив, вы сможете отказаться от util.log() и подобрать стратегию ведения журналов, соответствующую конкретным требованиям и сложности вашего приложения.
DEP0060: util._extend()
Тип: во время выполнения
API util._extend() устарел, поскольку это неподдерживаемый устаревший API, который случайно стал доступен пользовательскому коду. Вместо него используйте target = Object.assign(target, source).
DEP0061: fs.SyncWriteStream
Тип: прекращение поддержки
Класс fs.SyncWriteStream никогда не предназначался для публичного использования и был удален. Альтернативного API нет. Используйте альтернативу из пользовательского кода.
DEP0062: node --debug
Тип: прекращение поддержки
--debug активирует устаревший интерфейс отладчика V8, удаленный начиная с V8 5.8. Вместо него используется Inspector, который активируется с помощью --inspect.
DEP0063: ServerResponse.prototype.writeHeader()
Тип: только документация
API ServerResponse.prototype.writeHeader() модуля node:http устарел. Вместо него используйте ServerResponse.prototype.writeHead().
Метод ServerResponse.prototype.writeHeader() никогда не документировался как официально поддерживаемый API.
DEP0064: tls.createSecurePair()
Тип: во время выполнения
В документации Node.js 0.11.3 API tls.createSecurePair() был объявлен устаревшим. Вместо него следует использовать tls.Socket.
DEP0065: repl.REPL_MODE_MAGIC и NODE_REPL_MODE=magic
Тип: окончание жизненного цикла
Константа REPL_MODE_MAGIC модуля node:repl, используемая для параметра replMode, удалена. Её поведение полностью совпадало с поведением REPL_MODE_SLOPPY начиная с Node.js 6.0.0, когда была импортирована V8 5.0. Вместо неё используйте REPL_MODE_SLOPPY.
Переменная окружения NODE_REPL_MODE используется для установки базового replMode интерактивного сеанса node. Её значение magic также удалено. Вместо него используйте sloppy.
DEP0066: OutgoingMessage.prototype._headers, OutgoingMessage.prototype._headerNames
Тип: во время выполнения
Свойства 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
Тип: только документация
API OutgoingMessage.prototype._renderHeaders() модуля node:http устарел.
Свойство OutgoingMessage.prototype._renderHeaders никогда не было документировано как официально поддерживаемый API.
DEP0068: node debug
Тип: окончание жизненного цикла
node debug соответствует устаревшему отладчику CLI, который был заменён отладчиком CLI на основе инспектора V8, доступным через node inspect.
DEP0069: vm.runInDebugContext(string)
Тип: окончание жизненного цикла
DebugContext удалён из V8 и недоступен в Node.js 10 и более поздних версиях.
DebugContext был экспериментальным API.
DEP0070: async_hooks.currentId()
Тип: окончание жизненного цикла
async_hooks.currentId() переименован в async_hooks.executionAsyncId() для ясности.
Это изменение было внесено, когда async_hooks являлся экспериментальным API.
DEP0071: async_hooks.triggerId()
Тип: окончание жизненного цикла
async_hooks.triggerId() переименован в async_hooks.triggerAsyncId() для ясности.
Это изменение было внесено, когда async_hooks являлся экспериментальным API.
DEP0072: async_hooks.AsyncResource.triggerId()
Тип: окончание жизненного цикла
async_hooks.AsyncResource.triggerId() переименован в async_hooks.AsyncResource.triggerAsyncId() для ясности.
Это изменение было внесено, когда async_hooks являлся экспериментальным API.
DEP0073: Несколько внутренних свойств net.Server
Тип: окончание жизненного цикла
Доступ к нескольким внутренним, недокументированным свойствам экземпляров net.Server с неподходящими именами объявлен устаревшим.
Поскольку исходный API не был документирован и обычно не представлял пользы для кода, не являющегося внутренним, заменяющий API не предоставляется.
DEP0074: REPLServer.bufferedCommand
Тип: окончание жизненного цикла
Свойство REPLServer.bufferedCommand устарело; вместо него следует использовать REPLServer.clearBufferedCommand().
DEP0075: REPLServer.parseREPLKeyword()
Тип: окончание жизненного цикла
REPLServer.parseREPLKeyword() больше не доступен пользовательскому коду.
DEP0076: tls.parseCertString()
Тип: окончание жизненного цикла
tls.parseCertString() была простой вспомогательной функцией для разбора, ошибочно ставшей общедоступной. Она должна была разбирать строки субъекта и издателя сертификата, но никогда не обрабатывала многозначные относительные различительные имена должным образом.
В более ранних версиях этого документа предлагалось использовать querystring.parse() в качестве альтернативы tls.parseCertString(). Однако querystring.parse() также некорректно обрабатывает некоторые субъекты сертификатов и использовать её не следует.
DEP0077: Module._debug()
Тип: во время выполнения
Module._debug() устарел.
Функция Module._debug() никогда не была документирована как официально поддерживаемый API.
DEP0078: REPLServer.turnOffEditorMode()
Тип: окончание жизненного цикла
REPLServer.turnOffEditorMode() больше не доступен пользовательскому коду.
DEP0079: Пользовательская функция инспекции объектов через .inspect()
Тип: окончание жизненного цикла
Использование свойства с именем inspect объекта для указания пользовательской функции инспекции для util.inspect() объявлено устаревшим. Вместо него используйте util.inspect.custom. Для обратной совместимости с Node.js до версии 6.4.0 можно указать оба свойства.
DEP0080: path._makeLong()
Тип: только документация
Внутренний path._makeLong() не предназначался для публичного использования. Однако он оказался полезен для модулей пользовательского кода. Внутренний API устарел и заменён идентичным публичным методом path.toNamespacedPath().
DEP0081: fs.truncate() с использованием файлового дескриптора
Тип: во время выполнения
Использование fs.truncateSync() fs.truncate() с файловым дескриптором объявлено устаревшим. Для работы с файловыми дескрипторами используйте fs.ftruncate() или fs.ftruncateSync().
DEP0082: REPLServer.prototype.memory()
Тип: окончание жизненного цикла
REPLServer.prototype.memory() необходима только для внутренних механизмов самого REPLServer. Не используйте эту функцию.
DEP0083: Отключение ECDH путём установки ecdhCurve в значение false
Тип: окончание жизненного цикла
Для полного отключения ECDH только на сервере параметру ecdhCurve в tls.createSecureContext() и tls.TLSSocket можно было задать значение false. Этот режим был объявлен устаревшим при подготовке к переходу на OpenSSL 1.1.0 и для обеспечения единообразия с клиентом; теперь он не поддерживается. Вместо него используйте параметр ciphers.
DEP0084: подключение встроенных внутренних зависимостей
Тип: окончание жизненного цикла
Начиная с Node.js версий 4.4.0 и 5.2.0, несколько модулей, предназначенных только для внутреннего использования, по ошибке стали доступны пользовательскому коду через require(). Это были следующие модули:
v8/tools/codemapv8/tools/consarrayv8/tools/csvparserv8/tools/logreaderv8/tools/profile_viewv8/tools/profilev8/tools/SourceMapv8/tools/splaytreev8/tools/tickprocessor-driverv8/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
Тип: окончание жизненного цикла
Чувствительный API AsyncHooks никогда не был документирован и имел ряд незначительных проблем. Вместо него используйте API AsyncResource. См. https://github.com/nodejs/node/issues/15572.
DEP0086: Удаление runInAsyncIdScope
Тип: Завершение жизненного цикла
runInAsyncIdScope не генерирует событие 'before' или 'after', что может вызвать множество проблем. См. https://github.com/nodejs/node/issues/14328.
DEP0089: require('node:assert')
Тип: Устаревание отменено
Прямой импорт assert не рекомендован, поскольку предоставляемые функции используют проверки на нестрогое равенство. Устаревание было отменено, так как использование модуля node:assert не запрещается, а объявление об устаревании вызвало путаницу у разработчиков.
DEP0090: Недопустимая длина тега аутентификации GCM
Тип: Завершение жизненного цикла
Ранее 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
Тип: Завершение жизненного цикла
Свойство crypto.DEFAULT_ENCODING существовало только для совместимости с выпусками Node.js до версии 0.9.3 и было удалено.
DEP0092: Привязка верхнеуровневого this к module.exports
Тип: Только в документации
Присваивание свойств верхнеуровневому this в качестве альтернативы module.exports считается устаревшим. Разработчикам следует вместо этого использовать exports или module.exports.
DEP0093: crypto.fips считается устаревшим и заменён
Тип: Только в документации
Свойство crypto.fips считается устаревшим. Вместо него используйте crypto.setFips() и crypto.getFips().
DEP0094: Использование assert.fail() более чем с одним аргументом
Тип: Во время выполнения
Использование assert.fail() более чем с одним аргументом считается устаревшим. Используйте assert.fail() только с одним аргументом или другой метод модуля node:assert.
DEP0095: timers.enroll()
Тип: Во время выполнения
timers.enroll() считается устаревшим. Вместо него используйте общедоступный и документированный setTimeout() или setInterval().
DEP0096: timers.unenroll()
Тип: Во время выполнения
timers.unenroll() считается устаревшим. Вместо него используйте общедоступный и документированный clearTimeout() или clearInterval().
DEP0097: MakeCallback со свойством domain
Тип: Во время выполнения
Пользователям MakeCallback, добавляющим свойство domain для передачи контекста, следует перейти на вариант async_context для MakeCallback или CallbackScope либо на высокоуровневый класс AsyncResource.
DEP0098: Встраиваемые API AsyncHooks AsyncResource.emitBefore и AsyncResource.emitAfter
Тип: Завершение жизненного цикла
Встраиваемый API AsyncHooks предоставляет методы .emitBefore() и .emitAfter(), которые очень легко использовать неправильно, что может привести к невосстановимым ошибкам.
Вместо этого используйте API asyncResource.runInAsyncScope(), который представляет собой гораздо более безопасную и удобную альтернативу. См. https://github.com/nodejs/node/pull/18513.
DEP0099: API C++ node::MakeCallback, не учитывающие асинхронный контекст
Тип: Во время компиляции
Некоторые версии API node::MakeCallback, доступных нативным дополнениям, считаются устаревшими. Используйте версии API, принимающие параметр async_context.
DEP0100: process.assert()
Тип: Во время выполнения
process.assert() считается устаревшим. Вместо него используйте модуль assert.
Эта функция никогда не была документирована.
DEP0101: --with-lttng
Тип: Завершение жизненного цикла
Параметр времени компиляции --with-lttng удалён.
DEP0102: Использование noAssert в операциях Buffer#(read|write)
Тип: Завершение жизненного цикла
Аргумент noAssert больше не выполняет никаких функций. Все входные данные проверяются независимо от значения noAssert. Пропуск проверки может привести к труднообнаружимым ошибкам и сбоям.
DEP0103: Проверки типов process.binding('util').is[...]
Тип: Только в документации (поддерживает --pending-deprecation)
В целом следует избегать использования process.binding(). В частности, методы проверки типов можно заменить на util.types.
Это устаревание было заменено устареванием API process.binding() (DEP0111).
DEP0104: Приведение process.env к строке
Тип: Только в документации (поддерживает --pending-deprecation)
При присваивании свойству, не являющемуся строкой, в process.env присвоенное значение неявно преобразуется в строку. Такое поведение считается устаревшим, если присвоенное значение не является строкой, логическим значением или числом. В будущем такое присваивание может привести к ошибке. Преобразуйте значение свойства в строку, прежде чем присваивать его в process.env.
DEP0105: decipher.finaltol
Тип: Завершение жизненного цикла
decipher.finaltol() никогда не был документирован и являлся псевдонимом decipher.final(). Этот API удалён; рекомендуется вместо него использовать decipher.final().
DEP0106: crypto.createCipher и crypto.createDecipher
Тип: Завершение жизненного цикла
crypto.createCipher() и crypto.createDecipher() удалены, так как используют слабую функцию получения ключа (MD5 без соли) и статические векторы инициализации. Рекомендуется получать ключ с помощью crypto.pbkdf2() или crypto.scrypt() со случайными солями, а для создания объектов Cipher и Decipher соответственно использовать crypto.createCipheriv() и crypto.createDecipheriv().
DEP0107: tls.convertNPNProtocols()
Тип: Завершение жизненного цикла
Это была недокументированная вспомогательная функция, не предназначенная для использования за пределами ядра Node.js, которая утратила актуальность после удаления поддержки NPN (согласования следующего протокола).
DEP0108: zlib.bytesRead
Тип: Во время выполнения
Устаревший псевдоним для zlib.bytesWritten. Это исходное название было выбрано потому, что значение можно было интерпретировать и как количество байтов, прочитанных движком, однако оно не согласуется с другими потоками в Node.js, которые предоставляют значения под такими именами.
DEP0109: поддержка http, https и tls для недопустимых URL-адресов
Тип: снято с поддержки
Некоторые URL-адреса, которые ранее поддерживались (хотя и были строго недопустимыми), принимались API http.request(), http.get(), https.request(), https.get() и tls.checkServerIdentity(), поскольку их принимал устаревший API url.parse(). Упомянутые API теперь используют парсер URL WHATWG, который требует строго допустимых URL-адресов. Передача недопустимого URL устарела, и поддержка будет удалена в будущем.
DEP0110: кэшированные данные vm.Script
Тип: только в документации
Параметр produceCachedData устарел. Вместо него используйте script.createCachedData().
DEP0111: process.binding()
Тип: только в документации (поддерживает --pending-deprecation)
process.binding() предназначен только для использования во внутреннем коде Node.js.
Хотя process.binding() в целом не достиг статуса снятия с поддержки, он недоступен при включенной модели разрешений.
DEP0112: закрытые API dgram
Тип: во время выполнения
Ранее модуль 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()
Тип: снято с поддержки
Cipher.setAuthTag() и Decipher.getAuthTag() больше недоступны. Они никогда не были задокументированы и при вызове выбрасывали исключение.
DEP0114: crypto._toBuf()
Тип: снято с поддержки
Функция crypto._toBuf() не предназначалась для использования модулями за пределами ядра Node.js и была удалена.
DEP0115: crypto.prng(), crypto.pseudoRandomBytes(), crypto.rng()
Тип: только в документации (поддерживает --pending-deprecation)
В последних версиях Node.js между crypto.randomBytes() и crypto.pseudoRandomBytes() нет разницы. Последнее устаревает вместе с недокументированными псевдонимами crypto.prng() и crypto.rng() в пользу crypto.randomBytes() и может быть удалено в одном из будущих выпусков.
DEP0116: устаревший API URL
Тип: статус устаревания отменен
Устаревший API URL объявлен устаревшим. К нему относятся url.format(), url.parse(), url.resolve() и устаревший urlObject. Вместо него используйте API URL WHATWG.
DEP0117: собственные дескрипторы криптографии
Тип: снято с поддержки
В предыдущих версиях Node.js дескрипторы внутренних собственных объектов предоставлялись через свойство _handle классов Cipher, Decipher, DiffieHellman, DiffieHellmanGroup, ECDH, Hash, Hmac, Sign и Verify. Свойство _handle было удалено, поскольку неправильное использование собственного объекта может привести к аварийному завершению приложения.
DEP0118: поддержка dns.lookup() при ложном имени хоста
Тип: во время выполнения
В предыдущих версиях Node.js поддерживался вызов dns.lookup() с ложным именем хоста, например dns.lookup(false), ради обратной совместимости. Такое поведение не задокументировано и, как считается, не используется в реальных приложениях. В будущих версиях Node.js это будет приводить к ошибке.
DEP0119: закрытый API process.binding('uv').errname()
Тип: только в документации (поддерживает --pending-deprecation)
process.binding('uv').errname() устарел. Вместо него используйте util.getSystemErrorName().
DEP0120: поддержка счетчиков производительности Windows
Тип: снято с поддержки
Поддержка счетчиков производительности 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()
Тип: во время выполнения
Недокументированная функция net._setSimultaneousAccepts() изначально предназначалась для отладки и настройки производительности при использовании модулей node:child_process и node:cluster в Windows. Эта функция обычно не полезна и удаляется. Обсуждение доступно здесь: https://github.com/nodejs/node/issues/18391
DEP0122: tls Server.prototype.setOptions()
Тип: во время выполнения
Вместо него используйте Server.prototype.setSecureContext().
DEP0123: указание IP-адреса в качестве имени сервера TLS
Тип: во время выполнения
Указание IP-адреса в качестве имени сервера TLS не разрешено стандартом RFC 6066. В будущей версии это значение будет игнорироваться.
DEP0124: использование REPLServer.rli
Тип: снято с поддержки
Это свойство является ссылкой на сам экземпляр.
DEP0125: require('node:_stream_wrap')
Тип: во время выполнения
Модуль node:_stream_wrap объявлен устаревшим.
DEP0126: timers.active()
Тип: во время выполнения
Ранее недокументированный timers.active() объявлен устаревшим. Вместо него используйте общедоступный документированный timeout.refresh(). Если необходимо повторно активировать тайм-аут, можно использовать timeout.ref() без потери производительности начиная с Node.js 10.
DEP0127: timers._unrefActive()
Тип: во время выполнения
Ранее недокументированный и «закрытый» timers._unrefActive() объявлен устаревшим. Вместо него используйте общедоступный документированный timeout.refresh(). Если необходимо отменить ссылку на тайм-аут, можно использовать timeout.unref() без потери производительности начиная с Node.js 10.
DEP0128: модули с недопустимой записью main и файлом index.js
Тип: во время выполнения
Модули с недопустимой записью main (например, ./does-not-exist.js), в каталоге верхнего уровня которых также есть файл index.js, будут разрешать файл index.js. Это поведение объявлено устаревшим и в будущих версиях Node.js будет приводить к ошибке.
DEP0129: ChildProcess._channel
Тип: во время выполнения
Свойство _channel объектов дочерних процессов, возвращаемых функцией spawn() и подобными функциями, не предназначено для публичного использования. Вместо него используйте ChildProcess.channel.
DEP0130: Module.createRequireFromPath()
Тип: снято с поддержки
Вместо него используйте module.createRequire().
DEP0131: Устаревший HTTP-парсер
Тип: Конец срока службы
Устаревший HTTP-парсер, использовавшийся по умолчанию в версиях Node.js до 12.0.0, объявлен устаревшим и удалён в v13.0.0. До v13.0.0 для возврата к использованию устаревшего парсера можно было использовать флаг командной строки --http-parser=legacy.
DEP0132: worker.terminate() с обратным вызовом
Тип: Среда выполнения
Передача обратного вызова в worker.terminate() объявлена устаревшей. Вместо этого используйте возвращаемый объект Promise или слушатель события 'exit' рабочего потока.
DEP0133: http connection
Тип: Только документация
Предпочтительно использовать response.socket вместо response.connection, а request.socket вместо request.connection.
DEP0134: process._tickCallback
Тип: Только документация (поддерживается --pending-deprecation)
Свойство process._tickCallback никогда не документировалось как официально поддерживаемый API.
DEP0135: WriteStream.open() и ReadStream.open() являются внутренними
Тип: Среда выполнения
WriteStream.open() и ReadStream.open() — недокументированные внутренние API, использование которых в пользовательском коде не имеет смысла. Файловые потоки всегда следует открывать с помощью соответствующих фабричных методов fs.createWriteStream() и fs.createReadStream()) или передавать файловый дескриптор в параметрах.
DEP0136: http finished
Тип: Только документация
response.finished показывает, был ли вызван response.end(), а не было ли отправлено событие 'finish' и сброшены ли базовые данные.
Чтобы избежать неоднозначности, вместо этого используйте соответственно response.writableFinished или response.writableEnded.
Для сохранения существующего поведения response.finished следует заменить на response.writableEnded.
DEP0137: Закрытие fs.FileHandle при сборке мусора
Тип: Среда выполнения
Разрешение закрывать объект 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
Тип: Только документация
process.mainModule доступен только в CommonJS, тогда как глобальный объект process используется также в средах без CommonJS. Его использование в модулях ECMAScript не поддерживается.
Он объявлен устаревшим в пользу require.main, поскольку выполняет ту же задачу и доступен только в среде CommonJS.
DEP0139: process.umask() без аргументов
Тип: Только документация
Вызов process.umask() без аргумента приводит к двойной записи umask всего процесса. Это создаёт состояние гонки между потоками и представляет потенциальную угрозу безопасности. Безопасного кроссплатформенного альтернативного API не существует.
DEP0140: Используйте request.destroy() вместо request.abort()
Тип: Только документация
Используйте request.destroy() вместо request.abort().
DEP0141: repl.inputStream и repl.outputStream
Тип: Только документация (поддерживается --pending-deprecation)
Модуль node:repl экспортировал потоки ввода и вывода дважды. Используйте .input вместо .inputStream и .output вместо .outputStream.
DEP0142: repl._builtinLibs
Тип: Только документация (поддерживается --pending-deprecation)
Модуль node:repl экспортирует свойство _builtinLibs, содержащее массив встроенных модулей. До сих пор он был неполным, поэтому лучше использовать require('node:module').builtinModules.
DEP0143: Transform._transformState
Тип: Конец срока службы
Transform._transformState будет удалён в будущих версиях, поскольку после упрощения реализации он больше не потребуется.
DEP0144: module.parent
Тип: Только документация (поддерживается --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
Тип: Только документация
socket.bufferSize — это просто псевдоним для writable.writableLength.
DEP0146: new crypto.Certificate()
Тип: Только документация
Конструктор crypto.Certificate() объявлен устаревшим. Вместо него используйте статические методы crypto.Certificate().
DEP0147: fs.rmdir(path, { recursive: true })
Тип: Среда выполнения
В будущих версиях 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" (завершающий "/")
Тип: Конец срока службы
Использование завершающего "/" для определения сопоставлений каталогов подпутей в полях экспорта подпутей или импорта подпутей больше не поддерживается. Вместо этого используйте шаблоны подпутей.
DEP0149: http.IncomingMessage#connection
Тип: Только документация
Предпочтительно использовать message.socket вместо message.connection.
DEP0150: Изменение значения process.config
Тип: Конец срока службы
Свойство process.config предоставляет доступ к параметрам компиляции Node.js. Однако это свойство изменяемо и поэтому подвержено вмешательству. Возможность изменять его значение будет удалена в будущей версии Node.js.
DEP0151: Поиск главного index-файла и расширений
Тип: Среда выполнения
Ранее поиск index.js и расширений применялся при разрешении главной точки входа import 'pkg', даже при разрешении модулей ES.
После этого устаревания для разрешения всех главных точек входа модулей ES требуется явно указать запись "exports" или "main" с точным расширением файла.
DEP0152: свойства Extension PerformanceEntry
Тип: во время выполнения
Для типов объектов <PerformanceEntry> 'gc', 'http2' и 'http' назначаются дополнительные свойства, предоставляющие дополнительную информацию. Теперь эти свойства доступны в стандартном свойстве detail объекта PerformanceEntry. Существующие методы доступа объявлены устаревшими, и их больше не следует использовать.
DEP0153: преобразование типов параметров dns.lookup и dnsPromises.lookup
Тип: снято с эксплуатации
Использование ненулевого целочисленного значения для параметра family, ненулевого значения, не являющегося числом, для параметра hints, ненулевого значения, не являющегося логическим, для параметра all или ненулевого значения, не являющегося логическим, для параметра verbatim в dns.lookup() и dnsPromises.lookup() приводит к ошибке ERR_INVALID_ARG_TYPE.
DEP0154: параметры генерации пары ключей RSA-PSS
Тип: во время выполнения
Параметры 'hash' и 'mgf1Hash' заменены на 'hashAlgorithm' и 'mgf1HashAlgorithm'.
DEP0155: завершающие косые черты при разрешении шаблонных спецификаторов
Тип: во время выполнения
Переназначение спецификаторов, оканчивающихся на "/", например import 'pkg/x/', объявлено устаревшим для разрешения шаблонов пакетов "exports" и "imports".
DEP0156: свойство .aborted и событие 'abort', 'aborted' в http
Тип: только в документации
Вместо этого перейдите на 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 в потоках
Тип: снято с эксплуатации
Недокументированной возможностью потоков Node.js была поддержка thenable в методах реализации. Теперь эта возможность объявлена устаревшей. Вместо этого используйте обратные вызовы и не используйте асинхронные функции в методах реализации потоков.
Эта возможность приводила к неожиданным проблемам: пользователь мог реализовать функцию в стиле обратного вызова, но, например, использовать асинхронный метод, что вызывало ошибку, поскольку смешивать семантику Promise и обратных вызовов нельзя.
const w = new Writable({
async final(callback) {
await someOp();
callback();
},
}); copy DEP0158: buffer.slice(start, end)
Тип: только в документации
Этот метод объявлен устаревшим, поскольку он несовместим с Uint8Array.prototype.slice(), суперклассом Buffer.
Вместо него используйте buffer.subarray, который выполняет ту же задачу.
DEP0159: ERR_INVALID_CALLBACK
Тип: снято с эксплуатации
Этот код ошибки удален, поскольку он усиливал путаницу среди ошибок, используемых для проверки типов значений.
DEP0160: обработчик process.on('multipleResolves', handler)
Тип: во время выполнения
Это событие объявлено устаревшим, поскольку оно не работало с комбинаторами Promise в V8, что снижало его полезность.
DEP0161: process._getActiveRequests() и process._getActiveHandles()
Тип: только в документации
Функции process._getActiveHandles() и process._getActiveRequests() не предназначены для публичного использования и могут быть удалены в будущих выпусках.
Используйте process.getActiveResourcesInfo(), чтобы получить список типов активных ресурсов, а не сами ссылки на них.
DEP0162: преобразование fs.write(), fs.writeFileSync() в строку
Тип: снято с эксплуатации
Неявное преобразование объектов, имеющих собственное свойство toString и переданных вторым параметром в fs.write(), fs.writeFile(), fs.appendFile(), fs.writeFileSync() и fs.appendFileSync(), объявлено устаревшим. Преобразуйте их в примитивные строки.
DEP0163: channel.subscribe(onMessage), channel.unsubscribe(onMessage)
Тип: устаревание отменено
Эти методы были объявлены устаревшими, поскольку при их использовании объект канала мог подвергнуться сборке мусора, если пользователь не сохранял на него сильную ссылку. Устаревание отменено, поскольку теперь объекты каналов защищены от сборки мусора, если у канала есть активные подписчики.
DEP0164: преобразование process.exit(code), process.exitCode в целое число
Тип: снято с эксплуатации
Значения, отличные от undefined, null, целых чисел и строк, представляющих целые числа (например, '1'), объявлены устаревшими в качестве значения параметра code в process.exit() и в качестве значения, присваиваемого process.exitCode.
DEP0165: --trace-atomics-wait
Тип: во время выполнения
Флаг --trace-atomics-wait объявлен устаревшим, поскольку использует хук V8 SetAtomicsWaitCallback, который будет удален в одном из будущих выпусков V8.
DEP0166: двойные косые черты в целях imports и exports
Тип: во время выполнения
Сопоставление целей imports и exports пакетов с путями, содержащими двойную косую черту (символ "/" или "\"), объявлено устаревшим и в будущем выпуске приведет к ошибке проверки разрешения. Это же устаревание распространяется на совпадения с шаблоном, начинающиеся или заканчивающиеся косой чертой.
DEP0167: слабые экземпляры DiffieHellmanGroup (modp1, modp2, modp5)
Тип: только в документации
Известные группы MODP modp1, modp2 и modp5 объявлены устаревшими, поскольку не обеспечивают защиту от практически осуществимых атак. Подробности см. в разделе 2.4 RFC 8247.
Эти группы могут быть удалены в будущих версиях Node.js. Приложениям, использующим эти группы, следует рассмотреть возможность перехода на более надежные группы MODP.
DEP0168: необработанное исключение в обратных вызовах Node-API
Тип: во время выполнения
Неявное подавление неперехваченных исключений в обратных вызовах Node-API теперь объявлено устаревшим.
Установите флаг --force-node-api-uncaught-exceptions-policy, чтобы заставить Node.js генерировать событие 'uncaughtException', если исключение не обработано в обратных вызовах Node-API.
DEP0169: небезопасный url.parse()
Тип: только в документации (поддерживает --pending-deprecation)
Поведение url.parse() не стандартизировано и подвержено ошибкам, которые могут иметь последствия для безопасности. Вместо этого используйте API URL WHATWG. Для уязвимостей url.parse() CVE не присваиваются.
DEP0170: Недопустимый порт при использовании url.parse()
Тип: во время выполнения
url.parse() принимает URL-адреса с портами, не являющимися числами. Такое поведение может привести к подмене имени хоста при неожиданном вводе. В будущих версиях Node.js такие URL-адреса будут вызывать ошибку, как это уже происходит в WHATWG URL API.
DEP0171: Сеттеры для заголовков и трейлеров http.IncomingMessage
Тип: только в документации
В будущей версии Node.js свойства message.headers, message.headersDistinct, message.trailers и message.trailersDistinct станут доступны только для чтения.
DEP0172: Свойство asyncResource привязанных функций AsyncResource
Тип: во время выполнения
В будущей версии Node.js свойство asyncResource больше не будет добавляться при привязке функции к AsyncResource.
DEP0173: класс assert.CallTracker
Тип: во время выполнения
В будущей версии Node.js assert.CallTracker будет удалён. Рассмотрите возможность использования альтернатив, например вспомогательной функции mock.
DEP0174: вызов promisify для функции, возвращающей Promise
Тип: во время выполнения
Вызов util.promisify для функции, возвращающей Promise, приведёт к игнорированию результата этого промиса, что может вызвать необработанные отклонения промисов.
DEP0175: util.toUSVString
Тип: только в документации
API util.toUSVString() устарел. Вместо него используйте String.prototype.toWellFormed.
DEP0176: fs.F_OK, fs.R_OK, fs.W_OK, fs.X_OK
Тип: только в документации
Геттеры F_OK, R_OK, W_OK и X_OK, доступные непосредственно в node:fs, устарели. Вместо этого получайте их из fs.constants или fs.promises.constants.
DEP0177: util.types.isWebAssemblyCompiledModule
Тип: окончание жизненного цикла
API util.types.isWebAssemblyCompiledModule удалён. Вместо него используйте value instanceof WebAssembly.Module.
DEP0178: dirent.path
Тип: только в документации
Свойство dirent.path устарело из-за непоследовательности в разных ветках выпуска. Вместо него используйте dirent.parentPath.
DEP0179: Конструктор Hash
Тип: во время выполнения
Прямой вызов класса Hash с аргументом Hash() или new Hash() устарел, поскольку эти внутренние элементы не предназначены для публичного использования. Для создания экземпляров Hash используйте метод crypto.createHash().
DEP0180: Конструктор fs.Stats
Тип: во время выполнения
Прямой вызов класса fs.Stats с аргументом Stats() или new Stats() устарел, поскольку эти внутренние элементы не предназначены для публичного использования.
DEP0181: Конструктор Hmac
Тип: во время выполнения
Прямой вызов класса Hmac с аргументом Hmac() или new Hmac() устарел, поскольку эти внутренние элементы не предназначены для публичного использования. Для создания экземпляров Hmac используйте метод crypto.createHmac().
DEP0182: Короткие теги аутентификации GCM без явного указания authTagLength
Тип: только в документации (поддерживает --pending-deprecation)
Приложения, которым нужно использовать теги аутентификации короче стандартной длины, должны задавать для параметра authTagLength функции crypto.createDecipheriv() соответствующую длину.
Для шифров в режиме GCM функция decipher.setAuthTag() принимает теги аутентификации любой допустимой длины (см. DEP0090). Это поведение устаревает, чтобы привести его в большее соответствие с рекомендациями NIST SP 800-38D.
DEP0183: API на основе движков OpenSSL
Тип: только в документации
В OpenSSL 3 прекращена поддержка пользовательских движков и рекомендуется перейти на новую модель провайдеров. Параметр clientCertEngine для https.request(), tls.createSecureContext() и tls.createServer(); параметры privateKeyEngine и privateKeyIdentifier для tls.createSecureContext(); а также crypto.setEngine() — все они зависят от этой функциональности OpenSSL.
DEP0184: Создание экземпляров классов node:zlib без new
Тип: только в документации
Создание экземпляров классов без квалификатора new, экспортируемого модулем node:zlib, устарело. Рекомендуется вместо этого использовать квалификатор new. Это относится ко всем классам Zlib, например Deflate, DeflateRaw, Gunzip, Inflate, InflateRaw, Unzip и Zlib.
DEP0185: Создание экземпляров классов node:repl без new
Тип: только в документации
Создание экземпляров классов без квалификатора new, экспортируемого модулем node:repl, устарело. Рекомендуется вместо этого использовать квалификатор new. Это относится ко всем классам REPL, в том числе REPLServer и Recoverable.
DEP0187: Передача недопустимых типов аргументов в fs.existsSync
Тип: только в документации
Передача неподдерживаемых типов аргументов устарела; вместо возврата false в будущей версии будет вызываться ошибка.
DEP0188: process.features.ipv6 и process.features.uv
Тип: только в документации
Эти свойства всегда имеют значение true. Любые проверки на основе этих свойств избыточны.
DEP0189: process.features.tls_*
Тип: только в документации
Свойства process.features.tls_alpn, process.features.tls_ocsp и process.features.tls_sni устарели, поскольку гарантируется, что их значения совпадают со значением process.features.tls.
DEP0190: Передача args в node:child_process execFile/spawn с параметром shell, равным true
Тип: только в документации
Если массив args передаётся в child_process.execFile или child_process.spawn с параметром { shell: true }, значения не экранируются, а только разделяются пробелами, что может привести к внедрению команд в оболочку.
DEP0191: repl.builtinModules
Тип: только в документации (поддерживает --pending-deprecation)
Модуль node:repl экспортирует свойство builtinModules, содержащее массив встроенных модулей. Этот список был неполным и совпадал с уже устаревшим свойством repl._builtinLibs (DEP0142); вместо этого рекомендуется использовать require('node:module').builtinModules.
DEP0192: require('node:_tls_common') и require('node:_tls_wrap')
Тип: только документация
Модули node:_tls_common и node:_tls_wrap объявлены устаревшими, поскольку их следует считать внутренней реализацией Node.js, а не общедоступным API; вместо них используйте node:tls.
DEP0193: require('node:_stream_*')
Тип: только документация
Модули 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
Тип: только документация
Поддержка передачи приоритетов признана устаревшей в RFC 9113 и будет удалена в будущих версиях Node.js.
DEP0195: создание экземпляров классов node:http без new
Тип: только документация
Создание экземпляров классов без квалификатора new, экспортируемого модулем node:http, объявлено устаревшим. Рекомендуется использовать вместо него квалификатор new. Это относится ко всем классам HTTP, например OutgoingMessage, IncomingMessage, ServerResponse и ClientRequest.
DEP0196: вызов функций node:child_process с параметром options.shell, заданным пустой строкой
Тип: только документация
Вызов функций создания процессов с параметром { shell: '' } почти наверняка является непреднамеренным и может привести к аномальному поведению.
Чтобы заставить child_process.execFile или child_process.spawn запускать оболочку по умолчанию, используйте { shell: true }. Если оболочку запускать не нужно (поведение по умолчанию), опустите параметр shell или задайте ему значение false либо nullish-значение.
Чтобы заставить child_process.exec запускать оболочку по умолчанию, опустите параметр shell или задайте ему nullish-значение. Если оболочку запускать не нужно, используйте вместо этого child_process.execFile.
DEP0198: создание дайджестов SHAKE-128 и SHAKE-256 без явного указания options.outputLength
Тип: только документация (поддерживается --pending-deprecation)
Создание дайджестов SHAKE-128 и SHAKE-256 без явного указания options.outputLength объявлено устаревшим.
DEP0199: require('node:_http_*')
Тип: только документация
Модули node:_http_agent, node:_http_client, node:_http_common, node:_http_incoming, node:_http_outgoing и node:_http_server объявлены устаревшими, поскольку их следует считать внутренней реализацией Node.js, а не общедоступным API; вместо них используйте node:http.
© 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-v22.x/docs/api/deprecations.html