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