Устаревшие API
API Node.js могут быть помечены как устаревшие по следующим причинам:
- Использование API небезопасно.
- Доступно улучшенное альтернативное API.
- В будущей основной версии ожидаются изменения API, которые могут привести к нарушению совместимости.
Node.js использует три типа устаревания:
- Только в документации
- Вызывающее исключение во время выполнения
- Конец жизненного цикла
Устаревание только в документации отображается только в документации Node.js API. Во время выполнения Node.js оно не приводит к побочным эффектам. Некоторые устаревания только в документации вызывают предупреждение во время выполнения, если запущены с флагом --pending-deprecation (или его альтернативой, переменной окружения NODE_PENDING_DEPRECATION=1), аналогично устареваниям, вызывающим исключение во время выполнения. Устаревания только в документации, поддерживающие данный флаг, явно обозначены как таковые в списке устаревших API.
Устаревание, вызывающее исключение во время выполнения, по умолчанию выводит предупреждение в процесс, которое будет выведено в stderr первый раз при использовании устаревшего API. При использовании командной строки флага --throw-deprecation, устаревание, вызывающее исключение во время выполнения, приведет к ошибке.
Устаревание «Конец жизненного цикла» используется, когда функциональность удалена или скоро будет удалена из 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() конструктор
Тип: Выполнение (поддерживает --pending-deprecation)
Функция 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
Тип: Конец жизненного цикла
В более ранней версии Node.js cluster, свойство с именем suicide типа boolean было добавлено в объект Worker. Целью этого свойства было предоставление указания того, как и почему экземпляр 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 асинхронная функция без обратного вызова
Тип: Конец жизненного цикла
Вызов асинхронной функции без обратного вызова генерирует исключение TypeError в Node.js 10.0.0 и выше. См. https://github.com/nodejs/node/pull/12562.
DEP0014: fs.read устаревший интерфейс String
Тип: Конец жизненного цикла
Устарел интерфейс fs.read() устаревшего типа String. Используйте вместо него API Buffer, как указано в документации.
DEP0015: fs.readSync устаревший интерфейс String
Тип: Конец жизненного цикла
Устарел интерфейс fs.readSync() устаревшего типа String. Используйте вместо него 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')
Тип: Runtime
Модуль 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 модуль
Тип: Только в документации (поддерживает --pending-deprecation)
Модуль 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() устарел.
DEP0046: util.isBuffer()
Тип: Только в документации
API util.isBuffer() устарел. Используйте Buffer.isBuffer() вместо него.
DEP0047: util.isDate()
Тип: Только в документации
API util.isDate() устарел.
DEP0048: util.isError()
Тип: Только в документации
API util.isError() устарел.
DEP0049: util.isFunction()
Тип: Только в документации
API util.isFunction() устарел.
DEP0050: util.isNull()
Тип: Только в документации
API util.isNull() устарел.
DEP0051: util.isNullOrUndefined()
Тип: Только в документации
API util.isNullOrUndefined() устарело.
DEP0052: util.isNumber()
Тип: Только в документации
API util.isNumber() устарело.
DEP0053: util.isObject()
Тип: Только в документации
API util.isObject() устарело.
DEP0054: util.isPrimitive()
Тип: Только в документации
API util.isPrimitive() устарело.
DEP0055: util.isRegExp()
Тип: Только в документации
API util.isRegExp() устарело.
DEP0056: util.isString()
Тип: Только в документации
API util.isString() устарело.
DEP0057: util.isSymbol()
Тип: Только в документации
API util.isSymbol() устарело.
DEP0058: util.isUndefined()
Тип: Только в документации
API util.isUndefined() устарело.
DEP0059: util.log()
Тип: Только в документации
API util.log() устарело.
DEP0060: util._extend()
Тип: Только в документации
API util._extend() устарело.
DEP0061: fs.SyncWriteStream
Тип: Конец жизненного цикла
Класс fs.SyncWriteStream никогда не предназначался для использования в качестве публичного API и был удален. Альтернативное API отсутствует. Используйте альтернативное решение на уровне пользователя.
DEP0062: node --debug
Тип: Конец жизненного цикла
--debug активирует устаревленный интерфейс отладчика V8, который был удален начиная с V8 5.8. Он заменён отладчиком Inspector, который активируется с помощью --inspect.
DEP0063: ServerResponse.prototype.writeHeader()
Тип: Только в документации
Устарел модуль node:http ServerResponse.prototype.writeHeader() API. Используйте ServerResponse.prototype.writeHead() вместо него.
Метод ServerResponse.prototype.writeHeader() никогда не документировался в качестве официально поддерживаемого API.
DEP0064: tls.createSecurePair()
Тип: Выполнение
API tls.createSecurePair() устарело в документации Node.js 0.11.3. Пользователи должны использовать tls.Socket вместо него.
DEP0065: repl.REPL_MODE_MAGIC и NODE_REPL_MODE=magic
Тип: Конец жизненного цикла
Константа node:repl модуля REPL_MODE_MAGIC, используемая для опции 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
Тип: Выполнение
Свойства node:http модуля OutgoingMessage.prototype._headers и OutgoingMessage.prototype._headerNames устарели. Для работы с исходящими заголовками используйте один из публичных методов (например, 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
Тип: Только в документации
Устарел модуль node:http OutgoingMessage.prototype._renderHeaders() API.
Свойство OutgoingMessage.prototype._renderHeaders никогда не документировалось как официально поддерживаемое API.
DEP0068: node debug
Тип: Конец жизненного цикла
node debug соответствует устаревшему CLI-отладчику, который был заменён CLI-отладчиком на основе V8-Inspector, доступным через node inspect.
DEP0069: vm.runInDebugContext(string)
Тип: Конец жизненного цикла
Debug Context был удалён в V8 и недоступен в Node.js 10+.
Debug Context был экспериментальным 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() был тривиальным вспомогательным анализатором, который был случайно опубликован. Хотя он должен был анализировать строки темы и издателя сертификата, он никогда правильно не обрабатывал многозначные относительные имена Distinguished Names.
В более ранних версиях этого документа предлагалось использовать 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.truncate() fs.truncateSync() с использованием дескриптора файла устарел. Используйте fs.ftruncate() или fs.ftruncateSync() для работы с дескрипторами файлов.
DEP0082: REPLServer.prototype.memory()
Тип: Достиг конец жизненного цикла
REPLServer.prototype.memory() необходим только для внутренних механизмов самого REPLServer. Не используйте эту функцию.
DEP0083: Отключение ECDH путём установки ecdhCurve в false
Тип: Достиг конец жизненного цикла.
Параметр ecdhCurve для tls.createSecureContext() и tls.TLSSocket можно установить в false для полного отключения ECDH на сервере. Этот режим устарел в ожидании миграции на 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/tickprocessornode-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 устарело.
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
Тип: Конец жизненного цикла
Встраиваемый API AsyncHooks предоставляет методы .emitBefore() и .emitAfter(), которые очень легко использовать неправильно, что может привести к необратимым ошибкам.
Используйте asyncResource.runInAsyncScope() API вместо этого, так как он обеспечивает гораздо более безопасную и удобную альтернативу. См. https://github.com/nodejs/node/pull/18513.
DEP0099: API node::MakeCallback C++, не учитывающий контекст Async
Тип: На этапе компиляции
Некоторые версии 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() с случайными солями и использовать crypto.createCipheriv() и crypto.createDecipheriv() для получения объектов Cipher и Decipher соответственно.
DEP0107: tls.convertNPNProtocols()
Тип: Конец жизненного цикла
Это была недокументированная вспомогательная функция, не предназначенная для использования за пределами ядра Node.js и устаревшая из-за удаления поддержки NPN (Next Protocol Negotiation).
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 из-за того, что они принимались устаревшим 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: dgram закрытые API
Тип: Режим выполнения
Модуль 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. Используйте вместо этого WHATWG URL API.
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: process.binding('uv').errname() закрытый API
Тип: Только в документации (поддерживает --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: установка TLS ServerName на IP-адрес
Тип: В ходе выполнения
Установка TLS ServerName на IP-адрес запрещена спецификацией 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
Тип: Только документационная
Модуль 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: Поиск по основному индексу и расширениям
Тип: Во время выполнения
Ранее поиск по основному индексу и расширениям применялся к разрешению точки входа import 'pkg' даже при разрешении ES-модулей.
С этим устареванием все разрешения точек входа ES-модулей требуют явного "exports" или "main" записи с точным расширением файла.
DEP0152: Свойства расширения PerformanceEntry
Тип: Во время выполнения
Типы объектов 'gc', 'http2', и 'http' <PerformanceEntry> имеют дополнительные свойства, которые предоставляют дополнительную информацию. Эти свойства теперь доступны в стандартном свойстве detail объекта PerformanceEntry. Существующие методы доступа устарели и больше не должны использоваться.
DEP0153: dns.lookup и dnsPromises.lookup параметры принудительного преобразования типов
Тип: Конец жизненного цикла
Использование непустого значения, отличного от целого числа, для параметра family, нечислового значения для параметра hints, небулевого значения для all или небулевого значения для verbatim в dns.lookup() и dnsPromises.lookup() вызывает ошибку ERR_INVALID_ARG_TYPE.
DEP0154: Параметры генерации пары ключей RSA-PSS
Тип: Только документационная (поддерживает --pending-deprecation)
Параметры 'hash' и 'mgf1Hash' заменены на 'hashAlgorithm' и 'mgf1HashAlgorithm'.
DEP0155: Хвостастые слеши в разрешениях указателей шаблонов
Тип: Выполнение
Переназначение спецификаторов, оканчивающихся на "/", таких как import 'pkg/x/', устарело для пакета "exports" и разрешения шаблонов "imports".
DEP0156: Свойство .aborted и событие 'abort', 'aborted' в http
Тип: Запрещение только в документации
Переместитесь в <Поток> API вместо, так как 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 заключалась в поддержке thenables в методах реализации. Теперь это устарело, используйте обратные вызовы вместо этого и избегайте использования асинхронных функций для методов реализации потоков.
Эта функция приводила к неожиданным проблемам для пользователей, когда пользователь реализовывал функцию в стиле обратного вызова, но использовал, например, асинхронный метод, что приводило к ошибке, так как смешение семантики обещаний и обратных вызовов некорректно.
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)
Тип: Выполнение.
Это событие устарело, потому что оно не работало с комбинаторами обещаний 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)
Тип: Запрещение только в документации
Эти методы устарели, потому что они могут использоваться таким образом, что ссылка на канал не сохраняется достаточно долго для получения событий.
Используйте diagnostics_channel.subscribe(name, onMessage) или diagnostics_channel.unsubscribe(name, onMessage) вместо этого.
DEP0164: process.exit(code), process.exitCode приведение к целому числу
Тип: Запрещение только в документации
Значения, отличные от undefined, null, целых чисел и целых строк (например, '1') устарели в качестве значения для параметра code в process.exit() и при присвоении значению process.exitCode.
DEP0165: --trace-atomics-wait
Тип: Запрещение только в документации
Флаг --trace-atomics-wait устарел.
DEP0166: Двойные косые черты в целевых объектах импорта и экспорта
Тип: Выполнение
Устарело отображение целевых объектов импорта и экспорта пакетов в пути, содержащие двойные косые черты ("/" или "\"), и в будущей версии будет выдавать ошибку проверки разрешения. То же самое запрещение также относится к совпадениям шаблонов, начинающимся или заканчивающимся косой чертой.
DEP0167: Слабые экземпляры DiffieHellmanGroup (modp1, modp2, modp5)
Тип: Запрещение только в документации
Хорошо известные группы MODP modp1, modp2 и modp5 устарели, поскольку они не являются безопасными против практических атак. Подробнее см. RFC 8247 Section 2.4.
Эти группы могут быть удалены в будущих версиях 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 вместо него. CVEs не выдаются для url.parse() уязвимостей.
DEP0170: Некорректный порт при использовании url.parse()
Тип: Только для документации
url.parse() принимает URL с портами, которые не являются числами. Это поведение может привести к подделке имени хоста с непредвиденным вводом. Эти URL-адреса будут вызывать ошибку в будущих версиях Node.js, так как API URL WHATWG уже делает это.
DEP0171: Свойства для http.IncomingMessage заголовков и трейлеров
Тип: Только для документации
В будущей версии Node.js message.headers, message.headersDistinct, message.trailers и message.trailersDistinct будут только для чтения.
© 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-v18.x/docs/api/deprecations.html