API Node.js
Deno предоставляет полифилы для ряда встроенных модулей и глобальных объектов Node.js.
Изучить встроенные API Node.js
Работа над совместимостью с Node.js продолжается — помогите нам выявить пробелы и сообщите, какие модули вам нужны, создав issue на GitHub.
Полностью поддерживаемые модули (22/44)
node:assert
node:buffer
node:child_process
node:console
node:crypto
Certificate: Методы являются неработающими заглушками.
generateKeyPair: Параметр x448 не поддерживается.
generatePrime: Параметры safe, add и rem не поддерживаются.
KeyObject: Следующие элементы являются неработающими заглушками:
- from
- symmetricKeySize
- equals
publicDecrypt: Этот символ является неработающей заглушкой.
secureHeapUsed: Этот символ является неработающей заглушкой.
setEngine: Этот символ является неработающей заглушкой.
ECDH: Метод convertKey является неработающей заглушкой.
Sign: Методы sign и verify не поддерживаются, если входные данные не относятся к типу BinaryLike.
node:diagnostics_channel
node:events
node:fs
writeFile: Не поддерживается кодировка utf16le, latin1 и ucs2.
writeFileSync: Не поддерживается кодировка utf16le, latin1 и ucs2.
node:fs/promises
lchmod: Реализация lchmod не реализована.
node:module
Module: Метод register является неработающей заглушкой.
node:os
node:path
node:punycode
node:querystring
node:readline
node:sqlite
Этот модуль добавлен в Deno v2.2.
node:stream
node:string_decoder
node:test
node:timers
node:tty
node:url
Частично поддерживаемые модули (16/44)
node:async_hooks
AsyncResource: Реализация AsyncResource является неработающей заглушкой.
executionAsyncId: Реализация executionAsyncId является неработающей заглушкой.
createHook: Реализация createHook является неработающей заглушкой.
node:dgram
Socket: Следующие методы являются неработающими заглушками:
- addMembership
- addSourceSpecificMembership
- dropMembership
- dropSourceSpecificMembership
- setBroadcast
- setMulticastInterface
- setMulticastLoopback
- setMulticastTtl
- setTtl
node:dns
resolve: Параметр ttl не поддерживается.
resolve4: Параметр ttl не поддерживается.
resolve6: Параметр ttl не поддерживается.
resolveCname: Параметр ttl не поддерживается.
resolveCaa: Параметр ttl не поддерживается.
resolveMx: Параметр ttl не поддерживается.
resolveNaptr: Параметр ttl не поддерживается.
resolveNs: Параметр ttl не поддерживается.
resolvePtr: Параметр ttl не поддерживается.
resolveSoa: Параметр ttl не поддерживается.
resolveSrv: Параметр ttl не поддерживается.
resolveTxt: Параметр ttl не поддерживается.
resolveAny: Параметр ttl не поддерживается.
node:http
RequestOptions: Параметр createConnection не поддерживается.
ClientRequestArgs: Параметр createConnection не поддерживается.
ClientRequest: Параметр конструктора createConnection не поддерживается.
request: Параметр конструктора createConnection не поддерживается.
get: Параметр конструктора createConnection не поддерживается.
node:http2
Http2Session: Следующие методы являются неработающими заглушками:
- setLocalWindowSize
- ping
- localSettings
- remoteSettings
- settings
- ref
- unref
ServerHttp2Session: Все методы являются неработающими заглушками.
Http2Stream: Следующие методы являются неработающими заглушками:
- aborted
- bufferSize
- endAfterHeaders
- id
- pending
- priority
- rstCode
- sentHeaders
- sentInfoHeaders
- sentTrailers
- state
ClientHttp2Stream: Все методы являются неработающими заглушками.
getDefaultSettings: Эта функция является неработающей заглушкой.
getPackedSettings: Эта функция является неработающей заглушкой.
getUnpackedSettings: Эта функция является неработающей заглушкой.
node:https
Server: Параметры cert и key не поддерживают массив в качестве входных данных.
node:inspector
Поддерживается console. Остальные API являются неработающими заглушками.
node:net
Socket: Параметр fd не поддерживается.
node:perf_hooks
performance: Метод eventLoopUtilization является неработающей заглушкой. Метод timerify не реализован.
monitorEventLoopDelay: Этот символ не реализован.
node:process
События multipleResolves и worker не поддерживаются.
node:tls
createSecurePair: Этот символ в настоящее время не поддерживается.
node:util
transferableAbortSignal: Этот символ в настоящее время не поддерживается.
transferableAbortController: Этот символ в настоящее время не поддерживается.
MIMEParams: Этот символ в настоящее время не поддерживается.
MIMEType: Этот символ в настоящее время не поддерживается.
getSystemErrorMap: Этот символ в настоящее время не поддерживается.
node:v8
Поддерживаются cachedDataVersionTag и getHeapStatistics, serialize и deserialize. setFlagsFromStrings ничего не делает. Другие API не поддерживаются и вызовут ошибку.
setFlagsFromStrings: Эта функция ничего не делает.
node:vm
measureMemory: Это неработающая заглушка.
compile: Параметр importModuleDynamically не поддерживается.
createContext: Параметр importModuleDynamically не поддерживается.
Script: Параметр importModuleDynamically не поддерживается. Метод runInContext не поддерживает остановку на SIGINT.
node:worker_threads
parentPort: Метод emit не поддерживается. Метод removeAllListeners не поддерживается.
markAsUntransferable: Этот символ не поддерживается.
moveMessagePortToContext: Этот символ не поддерживается.
receiveMessageOnPort: Этот символ не поддерживается.
Worker: Метод getHeapSnapshot не поддерживается.
node:zlib
Options: Этот класс не поддерживается.
BrotliOptions: Этот класс не поддерживается.
BrotliCompress: Этот класс не поддерживается.
BrotliDecompress: Этот класс не поддерживается.
ZlibBase: Этот класс не поддерживается.
Неподдерживаемые модули (6/44)
node:cluster
Все экспортируемые элементы являются неработающими заглушками.
Все символы: Этот символ является неработающей заглушкой.
node:domain
Все экспортируемые элементы являются неработающими заглушками. Этот модуль Node устарел.
Все символы: Этот символ является неработающей заглушкой.
node:repl
Все символы не поддерживаются.
Все символы: Этот символ не поддерживается.
node:sea
Все символы не поддерживаются.
Все символы: Этот символ не поддерживается.
node:trace_events
Все экспортируемые элементы являются неработающими заглушками.
Все символы: Этот символ является неработающей заглушкой.
node:wasi
Все экспортируемые элементы являются неработающими заглушками.
Все символы: Этот символ является неработающей заглушкой.
Глобальные объекты
Это список глобальных объектов Node, поддерживаемых Deno. Эти глобальные объекты доступны только в области пакета npm. В собственном коде их можно использовать, импортировав из соответствующего модуля node:.
__dirname и __filename
__dirname и __filename — это глобальные объекты CommonJS. Они доступны внутри модулей CommonJS в области пакета npm, но не определены в модулях ES. В собственных модулях ES используйте вместо них import.meta.dirname и import.meta.filename, которые возвращают те же значения для текущего модуля.
Примечания к модулям
node:worker_threads
В Deno 2.7 значительно улучшена совместимость с node:worker_threads:
-
Потоки
stdoutиstderrкорректно передаются из рабочих потоков в родительский процесс. -
Теперь
worker.terminate()возвращает корректный код выхода. -
Поддерживаются параметры
workerData,execArgvиthreadName. -
Реализованы
worker.performance.eventLoopUtilization()иworker.cpuUsage(). -
Для
BroadcastChannelиз рабочих потоков корректно вызываются ref/unref.
node:child_process
В Deno 2.7 улучшена совместимость с node:child_process:
-
Потоки
stdio(stdin,stdout,stderr) представлены экземплярамиSocket, как и в Node.js. - Перенаправление оболочки (
>,<,>>) работает вexec()иexecSync(). -
fork()принимаетURLв качестве пути к модулю. -
Параметры
timeoutиkillSignalподдерживаются вexec()иspawn(). -
Переменная окружения
NODE_OPTIONSучитывается для процессов, запущенных сfork().
node:zlib
В Deno 2.7 в node:zlib добавлена поддержка сжатия Zstd:
import zlib from "node:zlib";
import { promisify } from "node:util";
const compress = promisify(zlib.zstdCompress);
const decompress = promisify(zlib.zstdDecompress);
const compressed = await compress(Buffer.from("Hello, Deno!"));
const result = await decompress(compressed);
console.log(result.toString()); // "Hello, Deno!"
Также доступны синхронные варианты zlib.zstdCompressSync() и zlib.zstdDecompressSync().
node:sqlite
В Deno 2.7 в node:sqlite добавлено несколько новых API:
-
DatabaseSync.setAuthorizer(callback)— регистрирует callback, вызываемый для каждой операции SQL, обеспечивая детальный контроль доступа к разрешённым таблицам и операциям:
import { constants, DatabaseSync } from "node:sqlite";
const db = new DatabaseSync(":memory:");
db.exec("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)");
// Allow reads, deny everything else
db.setAuthorizer((_action, _table) => {
return constants.SQLITE_OK;
});
-
DatabaseSync.enableDefensive(enabled)— включает или отключает защитный режим, который предотвращает потенциально опасные операции с базой данных, например изменение схемы во время выполнения. -
DatabaseSync.createTagStore()— создаёт кэш подготовленных выражений, сопоставляющий строки SQL с скомпилированными выражениями для эффективного повторного выполнения.
Результаты тестов Node.js
Если вам нужна более подробная информация о совместимости для каждого отдельного теста, список успешно пройденных и не пройденных тестов Node.js доступен на этой странице.
Последнее обновление:
© 2018–2025 the Deno authors
Licensed under the MIT License.
https://docs.deno.com/runtime/reference/node_apis