Устаревшие API
API Node.js могут быть устаревшими по следующим причинам:
- Использование API небезопасно.
- Доступно улучшенное альтернативное API.
- В будущей основной версии ожидаются изменения в API, которые могут привести к нарушению совместимости.
Node.js использует четыре типа устаревания:
- Только документация
- Приложение (только не-
node_modulesкод) - Выполнение (весь код)
- Завершение жизненного цикла
Устаревание только документации выражается только в документации API Node.js. При выполнении Node.js оно не вызывает побочных эффектов. Некоторые устаревания только документации вызывают предупреждение во время выполнения при запуске с флагом --pending-deprecation (или его альтернативой, переменной окружения NODE_PENDING_DEPRECATION=1), подобно устареваниям во время выполнения ниже. Устаревания только документации, которые поддерживают этот флаг, явно помечены как таковые в списке устаревших API.
Устаревание приложения только для не-node_modules кода по умолчанию генерирует предупреждение процесса, которое будет выведено в stderr при первом использовании устаревшего API в коде, который не загружается из node_modules. Когда используется командная строка флага --throw-deprecation, устаревание во время выполнения приведет к ошибке. При использовании --pending-deprecation предупреждения также будут выводиться для кода, загруженного из node_modules.
Устаревание во время выполнения для всего кода аналогично устареванию во время выполнения для не-node_modules кода, за исключением того, что оно также выводит предупреждение для кода, загруженного из node_modules.
Устаревание завершения жизненного цикла используется, когда функциональность удалена или скоро будет удалена из Node.js.
Отмена устаревания
Иногда устаревание API может быть отменено. В таких ситуациях этот документ будет обновлен с информацией, относящейся к принятому решению. Однако идентификатор устаревания не будет изменен.
Список устаревших API
DEP0001: http.OutgoingMessage.prototype.flush
Тип: Достигнут конец жизненного цикла
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
Тип: Достигнут конец жизненного цикла
В более ранней версии Node.js cluster, в объект 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 без digest
Тип: Достигнут конец жизненного цикла
Использование API crypto.pbkdf2() без указания digest устарело в Node.js 6.0, так как метод по умолчанию использовал нерекомендуемый digest '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() legacy String. Используйте вместо этого API Buffer, как указано в документации.
DEP0015: fs.readSync устаревший интерфейс String
Тип: Достиг конца жизненного цикла
Устарел интерфейс fs.readSync() legacy 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')
Тип: Во время выполнения
Модуль 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-интерфейс legacy, который был случайно открыт для пользовательского пространства. Вместо этого рассмотрите следующие альтернативы в зависимости от ваших конкретных потребностей:
-
Библиотеки журналирования сторонних разработчиков
-
Используйте
console.log(new Date().toLocaleString(), message)
Приняв одну из этих альтернатив, вы сможете перейти от util.log() и выбрать стратегию ведения журнала, соответствующую конкретным требованиям и сложности вашего приложения.
DEP0060: util._extend()
Тип: В ходе выполнения
API util._extend() устарело, так как это не поддерживаемый API-интерфейс legacy, который был случайно открыт для пользовательского пространства. Пожалуйста, используйте target = Object.assign(target, source) вместо него.
DEP0061: fs.SyncWriteStream
Тип: Конец срока службы
Класс fs.SyncWriteStream никогда не был предназначен для использования в качестве публичного API и был удален. Альтернативного API нет. Используйте альтернативу в пользовательском пространстве.
DEP0062: node --debug
Тип: Конец срока службы
--debug активирует интерфейс отладчика legacy V8, который был удалён начиная с V8 5.8. Вместо него используется Инспектор, который активируется с помощью --inspect.
DEP0063: ServerResponse.prototype.writeHeader()
Тип: Отмена только в документации
Модуль node:http API ServerResponse.prototype.writeHeader() устарел. Используйте 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 API OutgoingMessage.prototype._renderHeaders() устарел.
Свойство OutgoingMessage.prototype._renderHeaders никогда не было задокументировано как официально поддерживаемый API.
DEP0068: node debug
Тип: Конец жизненного цикла
node debug соответствует устаревшему дебаггеру командной строки, который был заменён дебаггером командной строки на основе V8-инспектора, доступного через node inspect.
DEP0069: vm.runInDebugContext(string)
Тип: Конец жизненного цикла
DebugContext был удалён из 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() был вспомогательным методом тривиального разбора, который был случайно сделан общедоступным. Хотя он должен был анализировать строки субъекта и издателя сертификата, он никогда не обрабатывал правильно строки Relative 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/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 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 url.parse(). Теперь упомянутые API используют анализатор URL WHATWG, который требует строго допустимых URL-адресов. Передача недопустимого URL-адреса устарела, и поддержка будет удалена в будущем.
DEP0110: vm.Script кэшированные данные
Тип: Устаревание только в документации
Опция produceCachedData устарела. Используйте script.createCachedData() вместо этого.
DEP0111: process.binding()
Тип: Устаревание только в документации (поддерживает --pending-deprecation)
process.binding() предназначен только для использования кодом ядра Node.js.
Хотя process.binding() в целом не достиг статуса конца жизненного цикла, он недоступен, когда включена модель разрешений permission model.
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. Пожалуйста, используйте 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: 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 на IP-адрес
Тип: Выполнение
Установка имени сервера TLS на 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
Тип: Устаревание в среде выполнения
Опции '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(). Для преждевременного закрытия запроса используйте Stream .destroy([error]), а затем проверьте свойство .destroyed и событие 'close'. Получающая сторона также должна проверить значение readable.readableEnded объекта http.IncomingMessage, чтобы определить, был ли это прерывание или вежливое уничтожение.
DEP0157: Поддержка Thenable в потоках
Тип: Достиг конец жизненного цикла
Недокументированная функция потоков Node.js — поддержка thenable в методах реализации. Сейчас это устарело, используйте коллбеки вместо этого и избегайте использования асинхронных функций в методах реализации потоков.
Эта функция могла привести к неожиданным проблемам, когда пользователь реализовывал функцию в стиле коллбека, но использовал, например, асинхронный метод, что приводило к ошибке, поскольку смешение семантики промисов и коллбеков недопустимо.
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 устарел, так как использует хук V8 SetAtomicsWaitCallback, который будет удален в будущих выпусках V8.
DEP0166: Двойные косые черты в целях импорта и экспорта
Тип: Выполнение
Целевые отображения импорта и экспорта пакетов в пути, включая двойной слэш ("/" или "\"), устарели и приведут к ошибке валидации разрешения в будущих выпусках. Такое же устаревание применяется к совпадениям шаблонов, начинающимся или заканчивающимся слэшем.
DEP0167: Слабые экземпляры DiffieHellmanGroup (modp1, modp2, modp5)
Тип: Только для документации
Хорошо известные группы MODP modp1, modp2, и modp5 устарели, поскольку они не защищены от практических атак. Подробности см. в RFC 8247 Раздел 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() поведение не стандартизировано и склонно к ошибкам, имеющим последствия для безопасности. Используйте WHATWG URL API вместо этого. CVE не выдаются для url.parse() уязвимостей.
DEP0170: Неверный порт при использовании url.parse()
Тип: Выполнение
url.parse() принимает URL с портами, которые не являются числами. Это поведение может привести к подделке имени хоста с неожиданным вводом. Эти URL будут вызывать ошибку в будущих версиях Node.js, так как 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 для функции, возвращающей
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() устарел, поскольку это внутренние компоненты, не предназначенные для использования в публичном доступе. Используйте метод crypto.createHash() для создания экземпляров Hash.
DEP0180: Конструктор fs.Stats
Тип: Выполнение
Прямой вызов класса fs.Stats с Stats() или new Stats() устарел, так как это внутренние компоненты, не предназначенные для публичного использования.
DEP0181: Конструктор Hmac
Тип: Выполнение
Прямой вызов класса Hmac с Hmac() или new Hmac() устарел, так как это внутренние компоненты, не предназначенные для публичного использования. Используйте метод crypto.createHmac() для создания экземпляров Hmac.
DEP0182: Короткие аутентификационные теги GCM без явного authTagLength
Тип: Только для документации (поддерживает --pending-deprecation)
Приложения, которые намерены использовать теги аутентификации, короче, чем длина тега аутентификации по умолчанию, должны установить параметр authTagLength функции crypto.createDecipheriv() на соответствующую длину.
Для шифров в режиме GCM функция decipher.setAuthTag() принимает теги аутентификации любой допустимой длины (см. DEP0090). Это поведение устарело, чтобы лучше соответствовать рекомендациям в соответствии с NIST SP 800-38D.
© Joyent, Inc. and other Node contributors
Licensed under the MIT License.
Node.js is a trademark of Joyent, Inc. and is used with its permission.
We are not endorsed by or affiliated with Joyent.
https://nodejs.org/api/deprecations.html