Устаревшие API
Node.js может устаревать API, когда: (a) использование API считается небезопасным, (b) доступно улучшенное альтернативное API, или (c) ожидаются изменения, нарушающие совместимость, в будущей основной версии.
Node.js использует три типа устаревания:
- Только документация
- Выполнение
- Конец жизненного цикла
Устаревание только в документации — это устаревание, выраженное только в документации API Node.js. Они не создают побочных эффектов во время выполнения Node.js.
Устаревание при выполнении по умолчанию генерирует предупреждение процесса, которое будет выведено в stderr при первом использовании устаревшего API. Когда используется флаг --throw-deprecation командной строки, устаревание при выполнении вызовет ошибку.
Устаревание в конце жизненного цикла используется для идентификации кода, который был удалён или скоро будет удалён из Node.js.
Отмена устаревания
Время от времени устаревание API может быть отменено. Такое действие может произойти как в релизе с меньшей, так и в релизе с большей версией semver. В таких ситуациях этот документ будет обновлён информацией, относящейся к этому решению. Однако идентификатор устаревания не будет изменён.
Список устаревших 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()
Тип: Только документация
Функция 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.
DEP0006: child_process options.customFds
Тип: Выполнение
В модуле child_process методы spawn(), fork(), и exec() параметр options.customFds устарел. Следует использовать параметр options.stdio.
DEP0007: cluster worker.suicide
Тип: Выполнение
В модуле cluster свойство worker.suicide устарело. Пожалуйста, используйте 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 будет вызывать TypeError.
DEP0010: crypto.createCredentials
Тип: Выполнение
API crypto.createCredentials() устарел. Пожалуйста, используйте tls.createSecureContext() вместо этого.
DEP0011: crypto.Credentials
Тип: Выполнение
Класс crypto.Credentials устарел. Пожалуйста, используйте tls.SecureContext вместо этого.
DEP0012: Domain.dispose
Тип: Выполнение
Domain.dispose() устарел. Восстанавливайте от неудачных операций ввода-вывода явно, используя обработчики событий ошибок, заданные в домене.
DEP0013: fs асинхронная функция без обратного вызова
Тип: Выполнение
Вызов асинхронной функции без обратного вызова устарел.
DEP0014: fs.read устаревшего интерфейса строк
Тип: Конец жизненного цикла
Устарел устаревший интерфейс строк fs.read(). Используйте API буфера, как указано в документации.
DEP0015: fs.readSync устаревшего интерфейса строк
Тип: Конец жизненного цикла
Устарел устаревший интерфейс строк fs.readSync(). Используйте API буфера, как указано в документации.
DEP0016: GLOBAL/root
Тип: Выполнение
Псевдонимы GLOBAL и root для свойства global устарели и больше не должны использоваться.
DEP0017: Intl.v8BreakIterator
Тип: Выполнение
Intl.v8BreakIterator устарел и будет удалён или заменён в ближайшее время.
DEP0018: Необработанные отклонения обещаний
Тип: Выполнение
Необработанные отклонения обещаний устарели. В будущем отклонения обещаний, которые не обрабатываются, приведут к завершению процесса Node.js с ненулевым кодом выхода.
DEP0019: require('.') решается вне каталога
Тип: Выполнение
В некоторых случаях require('.') может разрешиться вне каталога пакета. Это поведение устарело и будет удалено в будущей основной версии Node.js.
DEP0020: Server.connections
Тип: Выполнение
Свойство Server.connections устарело. Пожалуйста, используйте метод Server.getConnections() вместо этого.
DEP0021: Server.listenFD
Тип: Выполнение
Метод Server.listenFD() устарел. Пожалуйста, используйте Server.listen({fd: <number>}) вместо этого.
DEP0022: os.tmpDir()
Тип: Выполнение
API os.tmpDir() устарел. Пожалуйста, используйте 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()
Тип: Выполнение
API util.print() устарел. Пожалуйста, используйте console.log() вместо этого.
DEP0027: util.puts()
Тип: Выполнение
API util.puts() устарел. Пожалуйста, используйте console.log() вместо этого.
DEP0028: util.debug()
Тип: Выполнение
API util.debug() устарел. Пожалуйста, используйте console.error() вместо этого.
DEP0029: util.error()
Тип: Выполнение
API 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) устарел.
DEP0038: fs.lchownSync(path, uid, gid)
Тип: Только документация
API fs.lchownSync(path, uid, gid) устарел.
DEP0039: require.extensions
Тип: Только документация
Свойство require.extensions устарело.
DEP0040: punycode module
Тип: Только документация
Модуль punycode устарел. Пожалуйста, используйте альтернативу на стороне пользователя вместо него.
DEP0041: NODE_REPL_HISTORY_FILE environment variable
Тип: Только документация
Переменная окружения NODE_REPL_HISTORY_FILE устарела.
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 недоступен. Пожалуйста, используйте альтернативу на стороне пользователя.
DEP0062: node --debug
Тип: Выполнение
--debug активирует устаревший интерфейс отладчика V8, который был удален начиная с V8 5.8. Его заменяет Инспектор, который активируется с помощью --inspect.
DEP0063: ServerResponse.prototype.writeHeader()
Тип: Только документация
Модуль 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 and NODE_REPL_MODE=magic
Тип: Только документация
Постоянная repl модуля REPL_MODE_MAGIC, используемая для опции replMode, устарела. Ее поведение функционально идентично поведению REPL_MODE_SLOPPY с момента Node.js v6.0.0, когда был импортирован V8 5.0. Пожалуйста, используйте REPL_MODE_SLOPPY вместо него.
Переменная окружения NODE_REPL_MODE используется для установки базового replMode интерактивной сессии node. Ее значение по умолчанию magic аналогичным образом устарело в пользу sloppy.
DEP0066: outgoingMessage._headers, outgoingMessage._headerNames
Тип: Только документация
Свойства http модуля outgoingMessage._headers и outgoingMessage._headerNames устарели. Вместо этого используйте один из публичных методов (например, outgoingMessage.getHeader(), outgoingMessage.getHeaders(), outgoingMessage.getHeaderNames(), outgoingMessage.hasHeader(), outgoingMessage.removeHeader(), outgoingMessage.setHeader()) для работы с исходящими заголовками.
Примечание: outgoingMessage._headers и outgoingMessage._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)
Тип: Только документация
DbContext будет удален в V8 в ближайшее время и не будет доступен в Node 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.
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' }
DEP0079: Настройка функции проверки объектов через .inspect()
Тип: Только документация
Использование свойства с именем inspect в объекте для указания пользовательской функции проверки для util.inspect() устарело. Используйте util.inspect.custom вместо него. Для обратной совместимости с Node.js до версии 6.4.0 оба варианта могут быть указаны.
DEP0085: Чувствительный API AsyncHooks
Тип: Выполнение
Чувствительный API AsyncHooks никогда не документировался и имел различные незначительные проблемы, см. https://github.com/nodejs/node/issues/15572. Используйте API AsyncResource вместо него.
DEP0086: Удаление runInAsyncIdScope
Тип: Выполнение
runInAsyncIdScope не излучает событие before или after и может тем самым вызвать множество проблем. Для получения более подробной информации см. https://github.com/nodejs/node/issues/14328.
DEP0089: require('assert')
Тип: Только документация
Прямой импорт assert не рекомендуется, так как экспортированные функции будут использовать нестрогие проверки равенства. Используйте require('assert').strict вместо него. API такой же, как у устаревшего assert, но он всегда будет использовать строгие проверки равенства.
DEP0098: API AsyncHooks Embedder AsyncResource.emit<Before,After>
Тип: Выполнение
Встроенный API AsyncHooks предоставляет методы emit<Before,After>, которые очень легко использовать неправильно, что может привести к необратимым ошибкам.
Используйте API asyncResource.runInAsyncScope() вместо него, который предлагает гораздо более безопасную и удобную альтернативу. Для получения дополнительной информации см. https://github.com/nodejs/node/pull/18513.
© 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-v8.x/docs/api/deprecations.html