Skip to content

Каждый день Bun становится ближе к 100% совместимости с API Node.js. Сегодня популярные фреймворки, такие как Next.js, Express, и миллионы пакетов npm, предназначенных для Node.js, просто работают с Bun. Для обеспечения совместимости мы запускаем тысячи тестов из набора тестов Node.js перед каждым выпуском Bun.

Если пакет работает в Node.js, но не работает в Bun, мы считаем это ошибкой в Bun. Пожалуйста, откройте issue, и мы исправим это.

Эта страница регулярно обновляется, чтобы отражать статус совместимости последней версии Bun. Информация ниже отражает совместимость Bun с Node.js v23.

Встроенные модули Node.js ​

node:assert ​

🟢 Полностью реализовано.

node:buffer ​

🟢 Полностью реализовано.

node:console ​

🟢 Полностью реализовано.

node:dgram ​

🟢 Полностью реализовано. > 90% набора тестов Node.js проходят.

node:diagnostics_channel ​

🟢 Полностью реализовано.

node:dns ​

🟢 Полностью реализовано. > 90% набора тестов Node.js проходят.

node:events ​

🟢 Полностью реализовано. 100% набора тестов Node.js проходят. EventEmitterAsyncResource использует AsyncResource внутри.

node:fs ​

🟢 Полностью реализовано. 92% набора тестов Node.js проходят.

node:http ​

🟢 Полностью реализовано. Тело исходящего клиентского запроса в настоящее время буферизуется вместо потоковой передачи.

node:https ​

🟢 API реализованы, но Agent не всегда используется.

node:os ​

🟢 Полностью реализовано. 100% набора тестов Node.js проходят.

node:path ​

🟢 Полностью реализовано. 100% набора тестов Node.js проходят.

node:punycode ​

🟢 Полностью реализовано. 100% набора тестов Node.js проходят, устарело в Node.js.

node:querystring ​

🟢 Полностью реализовано. 100% набора тестов Node.js проходят.

node:readline ​

🟢 Полностью реализовано.

node:stream ​

🟢 Полностью реализовано.

node:string_decoder ​

🟢 Полностью реализовано. 100% набора тестов Node.js проходят.

node:timers ​

🟢 Рекомендуется использовать глобальные setTimeout и т.д.

node:tty ​

🟢 Полностью реализовано.

node:url ​

🟢 Полностью реализовано.

node:zlib ​

🟢 Полностью реализовано. 98% набора тестов Node.js проходят.

node:async_hooks ​

🟡 AsyncLocalStorage и AsyncResource реализованы. Хуки промисов v8 не вызываются, и их использование настоятельно не рекомендуется.

node:child_process ​

🟡 Отсутствуют proc.gid proc.uid. Класс Stream не экспортируется. IPC не может отправлять дескрипторы сокетов. IPC между Node.js и Bun может использоваться с сериализацией JSON.

node:cluster ​

🟡 Дескрипторы и файловые дескрипторы не могут передаваться между воркерами, что означает, что балансировка нагрузки HTTP-запросов между процессами в настоящее время поддерживается только на Linux (через SO_REUSEPORT). В остальном реализовано, но не проверено в бою.

node:crypto ​

🟡 Отсутствуют secureHeapUsed setEngine setFips

node:domain ​

🟡 Отсутствуют Domain active

node:http2 ​

🟡 Клиент и сервер реализованы (95,25% набора тестов gRPC проходят). Отсутствуют options.allowHTTP1, options.enableConnectProtocol, расширение ALTSVC и http2stream.pushStream.

node:module ​

🟡 Отсутствуют syncBuiltinESMExports, Module#load(). Переопределение require.cache поддерживается для модулей ESM и CJS. module._extensions, module._pathCache, module._cache являются заглушками. module.register не реализован, и мы рекомендуем использовать Bun.plugin в качестве временного решения.

node:net ​

🟢 Полностью реализовано.

node:perf_hooks ​

🟡 API реализованы, но набор тестов Node.js ещё не проходит для этого модуля.

node:process ​

🟡 См. глобальный process.

node:sys ​

🟡 См. node:util.

node:tls ​

🟡 Отсутствует tls.createSecurePair.

node:util ​

🟡 Отсутствуют getCallSite getCallSites getSystemErrorMap getSystemErrorMessage transferableAbortSignal transferableAbortController

node:v8 ​

🟡 writeHeapSnapshot и getHeapSnapshot реализованы. serialize и deserialize используют формат wire JavaScriptCore вместо V8. Другие методы не реализованы. Для профилирования используйте bun:jsc.

node:vm ​

🟡 Основная функциональность и ES-модули реализованы, включая vm.Script, vm.createContext, vm.runInContext, vm.runInNewContext, vm.runInThisContext, vm.compileFunction, vm.isContext, vm.Module, vm.SourceTextModule, vm.SyntheticModule и поддержку importModuleDynamically. Опции вроде timeout и breakOnSigint полностью поддерживаются. Отсутствуют vm.measureMemory и некоторая функциональность cachedData.

node:wasi ​

🟡 Частично реализовано.

node:worker_threads ​

🟡 Worker не поддерживает следующие опции: stdin stdout stderr trackedUnmanagedFds resourceLimits. Отсутствуют markAsUntransferable moveMessagePortToContext.

node:inspector ​

🔴 Не реализовано.

node:repl ​

🔴 Не реализовано.

node:sqlite ​

🔴 Не реализовано.

node:test ​

🟡 Частично реализовано. Отсутствуют моки, снапшоты, таймеры. Используйте bun:test вместо этого.

node:trace_events ​

🔴 Не реализовано.

Глобальные объекты Node.js ​

Таблица ниже перечисляет все глобальные объекты, реализованные в Node.js, и текущий статус совместимости Bun.

AbortController ​

🟢 Полностью реализовано.

AbortSignal ​

🟢 Полностью реализовано.

Blob ​

🟢 Полностью реализовано.

Buffer ​

🟢 Полностью реализовано.

ByteLengthQueuingStrategy ​

🟢 Полностью реализовано.

__dirname ​

🟢 Полностью реализовано.

__filename ​

🟢 Полностью реализовано.

atob() ​

🟢 Полностью реализовано.

Atomics ​

🟢 Полностью реализовано.

BroadcastChannel ​

🟢 Полностью реализовано.

btoa() ​

🟢 Полностью реализовано.

clearImmediate() ​

🟢 Полностью реализовано.

clearInterval() ​

🟢 Полностью реализовано.

clearTimeout() ​

🟢 Полностью реализовано.

CompressionStream ​

🟢 Полностью реализовано.

console ​

🟢 Полностью реализовано.

CountQueuingStrategy ​

🟢 Полностью реализовано.

Crypto ​

🟢 Полностью реализовано.

SubtleCrypto (crypto) ​

🟢 Полностью реализовано.

CryptoKey ​

🟢 Полностью реализовано.

CustomEvent ​

🟢 Полностью реализовано.

DecompressionStream ​

🟢 Полностью реализовано.

Event ​

🟢 Полностью реализовано.

EventTarget ​

🟢 Полностью реализовано.

exports ​

🟢 Полностью реализовано.

fetch ​

🟢 Полностью реализовано.

FormData ​

🟢 Полностью реализовано.

global ​

🟢 Реализовано. Это объект, содержащий все объекты в глобальном пространстве имён. К нему редко обращаются напрямую, так как его содержимое доступно без дополнительного префикса, например __dirname вместо global.__dirname.

globalThis ​

🟢 Псевдоним для global.

Headers ​

🟢 Полностью реализовано.

MessageChannel ​

🟢 Полностью реализовано.

MessageEvent ​

🟢 Полностью реализовано.

MessagePort ​

🟢 Полностью реализовано.

module ​

🟢 Полностью реализовано.

PerformanceEntry ​

🟢 Полностью реализовано.

PerformanceMark ​

🟢 Полностью реализовано.

PerformanceMeasure ​

🟢 Полностью реализовано.

PerformanceObserver ​

🟢 Полностью реализовано.

PerformanceObserverEntryList ​

🟢 Полностью реализовано.

PerformanceResourceTiming ​

🟢 Полностью реализовано.

performance ​

🟢 Полностью реализовано.

process ​

🟡 В основном реализовано. process.binding (внутренние привязки Node.js, на которые полагаются некоторые пакеты) реализован частично. process.title в настоящее время является заглушкой на macOS и Linux. getActiveResourcesInfo setActiveResourcesInfo, getActiveResources и setSourceMapsEnabled являются заглушками. Новые API, такие как process.loadEnvFile и process.getBuiltinModule, ещё не реализованы.

queueMicrotask() ​

🟢 Полностью реализовано.

ReadableByteStreamController ​

🟢 Полностью реализовано.

ReadableStream ​

🟢 Полностью реализовано.

ReadableStreamBYOBReader ​

🟢 Полностью реализовано.

ReadableStreamBYOBRequest ​

🟢 Полностью реализовано.

ReadableStreamDefaultController ​

🟢 Полностью реализовано.

ReadableStreamDefaultReader ​

🟢 Полностью реализовано.

require() ​

🟢 Полностью реализовано, включая require.main, require.cache, require.resolve.

Response ​

🟢 Полностью реализовано.

Request ​

🟢 Полностью реализовано.

setImmediate() ​

🟢 Полностью реализовано.

setInterval() ​

🟢 Полностью реализовано.

setTimeout() ​

🟢 Полностью реализовано.

structuredClone() ​

🟢 Полностью реализовано.

SubtleCrypto ​

🟢 Полностью реализовано.

DOMException ​

🟢 Полностью реализовано.

TextDecoder ​

🟢 Полностью реализовано.

TextDecoderStream ​

🟢 Полностью реализовано.

TextEncoder ​

🟢 Полностью реализовано.

TextEncoderStream ​

🟢 Полностью реализовано.

TransformStream ​

🟢 Полностью реализовано.

TransformStreamDefaultController ​

🟢 Полностью реализовано.

URL ​

🟢 Полностью реализовано.

URLSearchParams ​

🟢 Полностью реализовано.

WebAssembly ​

🟢 Полностью реализовано.

WritableStream ​

🟢 Полностью реализовано.

WritableStreamDefaultController ​

🟢 Полностью реализовано.

WritableStreamDefaultWriter ​

🟢 Полностью реализовано.

Bun от www.bunjs.com.cn