Устаревшие API
API Node.js могут быть помечены как устаревшие по следующим причинам:
- Использование API небезопасно.
- Доступно улучшенное альтернативное API.
- В будущей основной версии ожидаются изменения API, которые могут привести к проблемам совместимости.
Node.js использует три типа устаревания:
- Только в документации
- Выполнение
- Конец жизненного цикла
Устаревание, только в документации, выражается только в документации API Node.js. Оно не приводит к побочным эффектам при выполнении 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, объекту Worker было добавлено булево свойство с именем suicide. Цель этого свойства заключалась в предоставлении информации о том, как и почему экземпляр Worker завершил работу. В Node.js 6.0.0 старое свойство было устаревшим и заменено новым свойством worker.exitedAfterDisconnect. Старое имя свойства не точно описывало фактическую семантику и было излишне эмоционально окрашено.
DEP0008: require('constants')
Тип: Устаревание только в документации
Модуль constants устарел. Для получения доступа к константам, относящимся к определённым встроенным модулям Node.js, разработчики должны обращаться к свойству constants, экспонируемому соответствующим модулем. Например, require('fs').constants и require('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() устаревшего 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 с ненулевым кодом выхода.
DEP0019: require('.') разрешён вне каталога
Тип: Достигнут предел жизненного цикла
В некоторых случаях require('.') может разрешаться вне каталога пакета. Это поведение было удалено.
DEP0020: Server.connections
Тип: Выполнение
Свойство Server.connections устарело. Пожалуйста, используйте метод 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('sys')
Тип: Выполнение
Модуль 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: domain модуль
Тип: Устаревание только в документации
Модуль domain устарел и не должен использоваться.
DEP0033: EventEmitter.listenerCount()
Тип: Только в документации
API EventEmitter.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: 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() устарело.
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()
Тип: Только в документации
API модуля http 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
Тип: Срок службы истек
Постоянная 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
Тип: Во время выполнения
Свойства 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
Тип: Только в документации
API модуля http OutgoingMessage.prototype._renderHeaders() устарел.
Свойство OutgoingMessage.prototype._renderHeaders никогда не было задокументировано как официально поддерживаемый API.
DEP0068: node debug
Тип: Во время выполнения
node debug соответствует устаревшему CLI отладчику, который был заменён CLI отладчиком на основе V8-инспектора, доступным через node inspect.
DEP0069: vm.runInDebugContext(string)
Тип: Срок службы истек
DebugContext был удалён в V8 и недоступен в Node.js 10+.
DebugContext был экспериментальным API.
DEP0070: async_hooks.currentId()
Тип: Срок службы истек
async_hooks.currentId() было переименовано в async_hooks.executionAsyncId() для ясности.
Это изменение было сделано, когда async_hooks был экспериментальным API.
DEP0071: async_hooks.triggerId()
Тип: Достигнут предел жизненного цикла
async_hooks.triggerId() было переименовано в async_hooks.triggerAsyncId() для большей ясности.
Это изменение было внесено, когда async_hooks был экспериментальным API.
DEP0072: async_hooks.AsyncResource.triggerId()
Тип: Достигнут предел жизненного цикла
async_hooks.AsyncResource.triggerId() было переименовано в async_hooks.AsyncResource.triggerAsyncId() для большей ясности.
Это изменение было внесено, когда async_hooks был экспериментальным API.
DEP0073: Несколько внутренних свойств net.Server
Тип: Достигнут предел жизненного цикла
Доступ к нескольким внутренним, не документированным свойствам экземпляров net.Server с неподходящими именами устарел.
Поскольку исходный API не был документирован и не был полезен для кода, не относящегося к внутренней работе, замены API не предоставляется.
DEP0074: REPLServer.bufferedCommand
Тип: Режим выполнения
Свойство REPLServer.bufferedCommand было устарело в пользу REPLServer.clearBufferedCommand().
DEP0075: REPLServer.parseREPLKeyword()
Тип: Режим выполнения
REPLServer.parseREPLKeyword() было удалено из видимости для пользовательского кода.
DEP0076: tls.parseCertString()
Тип: Режим выполнения
tls.parseCertString() — это вспомогательная функция парсинга, которая была сделана общедоступной по ошибке. Эту функцию обычно можно заменить:
const querystring = require('querystring');
querystring.parse(str, '\n', '='); Эта функция не полностью эквивалентна querystring.parse(). Одно отличие состоит в том, что querystring.parse() выполняет декодирование URL:
> querystring.parse('%E5%A5%BD=1', '\n', '=');
{ '好': '1' }
> tls.parseCertString('%E5%A5%BD=1');
{ '%E5%A5%BD': '1' } 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: require для связанных внутренних зависимостей
Тип: Достигнут предел жизненного цикла
С версий 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('assert')
Тип: Отмена устаревания
Импорт assert напрямую не рекомендовался, так как экспонированные функции используют нестрогие проверки равенства. Устаревание было отменено, так как использование модуля 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() с одним аргументом или другой метод модуля 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: AsyncHooks встраиваемая AsyncResource.emitBefore и AsyncResource.emitAfter API
Тип: Конец жизненного цикла
Встроенный API AsyncHooks предоставляет методы .emitBefore() и .emitAfter(), которые очень легко использовать неправильно, что может привести к необратимым ошибкам.
Используйте asyncResource.runInAsyncScope() API вместо этого, который предоставляет гораздо более безопасную и удобную альтернативу. См. https://github.com/nodejs/node/pull/18513.
DEP0099: Async-контекстно-независимые node::MakeCallback C++ API
Тип: Устарело на этапе компиляции
Некоторые версии node::MakeCallback API, доступные для модулей нативных языков, устарели. Пожалуйста, используйте версии API, которые принимают параметр async_context.
DEP0100: process.assert()
Тип: Отслужило своё время
process.assert() устарело. Пожалуйста, используйте модуль assert вместо этого.
Эта функция никогда не была документирована.
DEP0101: --with-lttng
Тип: Конец жизненного цикла
Опция компиляции --with-lttng была удалена.
DEP0102: Использование noAssert в операциях Buffer#(read|write)
Тип: Конец жизненного цикла
Использование аргумента noAssert больше не имеет функциональности. Весь ввод будет проверен, независимо от того, установлено ли оно в true или нет. Пропуск проверки может привести к трудно обнаруживаемым ошибкам и сбоям.
DEP0103: process.binding('util').is[...] проверки типов
Тип: Только в документации (поддерживает --pending-deprecation)
Использование process.binding() в целом следует избегать. Методы проверки типов могут быть заменены использованием util.types.
Эта устаревшая функция была заменена на устаревшую функцию process.binding() API (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-адреса принимались через 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.
DEP0112: dgram частные API
Тип: В ходе выполнения
Модуль 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 WHATWG URL.
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() изначально предназначалась для отладки и настройки производительности при использовании модулей child_process и 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('_stream_wrap')
Тип: Модуль
Модуль _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
Тип: Только документация (поддерживает --pending-deprecation)
Модули с невалидным main (например, ./does-not-exist.js) и файлом index.js в корневой директории будут разрешать файл index.js. Это устарело и в будущих версиях Node.js будет вызывать ошибку.
DEP0129: ChildProcess._channel
Тип: Модуль
Свойство _channel объектов дочерних процессов, возвращаемых функциями spawn() и подобными, не предназначено для публичного использования. Используйте ChildProcess.channel вместо него.
DEP0130: Module.createRequireFromPath()
Тип: Модуль
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('fs').promises;
async function openAndClose() {
let filehandle;
try {
filehandle = await fsPromises.open('thefile.txt', 'r');
} finally {
if (filehandle !== undefined)
await filehandle.close();
}
} 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)
Модуль repl экспортировал входной и выходной потоки дважды. Используйте .input вместо .inputStream и .output вместо .outputStream.
DEP0142: repl._builtinLibs
Тип: Только документация
Модуль repl экспортирует свойство _builtinLibs, содержащее массив с нативными модулями. До сих пор он был неполным, и лучше полагаться на require('module').builtinModules.
DEP0143: Transform._transformState
Тип: Отмена в ходе выполнения Transform._transformState будет удалена в будущих версиях, так как она больше не требуется из-за упрощения реализации.
DEP0144: module.parent
Тип: Только документация
Модуль 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.
} При поиске модулей CommonJS, которые потребовали текущий модуль, можно использовать require.cache и module.children:
const moduleParents = Object.values(require.cache) .filter((m) => m.children.includes(module));
DEP0145: socket.bufferSize
Тип: Только документация
socket.bufferSize — это просто псевдоним для writable.writableLength.
DEP0146: new crypto.Certificate()
Тип: Только документация
Конструктор crypto.Certificate() устарел. Используйте статические методы crypto.Certificate() вместо него.
DEP0147: fs.rmdir(path, { recursive: true })
Тип: Только документация
В будущих версиях Node.js, fs.rmdir(path, { recursive: true }) будет выбрасывать ошибку при отсутствии путей или при указании файла в качестве цели. Используйте fs.rm(path, { recursive: true, force: true }) вместо него.
© 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-v14.x/docs/api/deprecations.html