매일 Bun 은 100% Node.js API 호환성에 더 가까워지고 있습니다. 오늘날 Next.js, Express 와 같은 인기 있는 프레임워크와 수백만 개의 npm 패키지가 Bun 에서 바로 작동합니다. 호환성을 보장하기 위해 Bun 의 모든 릴리스 전에 Node.js 테스트 스위트에서 수천 개의 테스트를 실행합니다.
패키지가 Node.js 에서 작동하지만 Bun 에서 작동하지 않으면 Bun 의 버그로 간주합니다. 이슈를 열어주세요. 수정하겠습니다.
이 페이지는 최신 버전의 Bun 호환성 상태를 반영하기 위해 정기적으로 업데이트됩니다. 아래 정보는 Bun 의 Node.js v23 호환성을 반영합니다.
내장 Node.js 모듈
node:assert
🟢 완전히 구현됨.
node:buffer
🟢 완전히 구현됨.
node:console
🟢 완전히 구현됨.
node:dgram
🟢 완전히 구현됨. > Node.js 테스트 스위트의 90% 이상 통과.
node:diagnostics_channel
🟢 완전히 구현됨.
node:dns
🟢 완전히 구현됨. > Node.js 테스트 스위트의 90% 이상 통과.
node:events
🟢 완전히 구현됨. Node.js 테스트 스위트의 100% 통과. EventEmitterAsyncResource 는 내부적으로 AsyncResource 를 사용합니다.
node:fs
🟢 완전히 구현됨. Node.js 테스트 스위트의 92% 통과.
node:http
🟢 완전히 구현됨. 나가는 클라이언트 요청 본문은 현재 스트리밍 대신 버퍼링됩니다.
node:https
🟢 API 는 구현되었지만 Agent 가 항상 아직 사용되지는 않습니다.
node:os
🟢 완전히 구현됨. Node.js 테스트 스위트의 100% 통과.
node:path
🟢 완전히 구현됨. Node.js 테스트 스위트의 100% 통과.
node:punycode
🟢 완전히 구현됨. Node.js 테스트 스위트의 100% 통과, Node.js 에서 deprecated.
node:querystring
🟢 완전히 구현됨. Node.js 테스트 스위트의 100% 통과.
node:readline
🟢 완전히 구현됨.
node:stream
🟢 완전히 구현됨.
node:string_decoder
🟢 완전히 구현됨. Node.js 테스트 스위트의 100% 통과.
node:timers
🟢 대신 전역 setTimeout 등을 사용하는 것이 권장됩니다.
node:tty
🟢 완전히 구현됨.
node:url
🟢 완전히 구현됨.
node:zlib
🟢 완전히 구현됨. Node.js 테스트 스위트의 98% 통과.
node:async_hooks
🟡 AsyncLocalStorage 와 AsyncResource 가 구현되었습니다. v8 promise hook 은 호출되지 않으며 사용이 강력히 권장되지 않습니다.
node:child_process
🟡 proc.gid, proc.uid 누락. Stream 클래스 내보내지지 않음. IPC 는 소켓 핸들을 보낼 수 없습니다. Node.js ↔ Bun IPC 는 JSON 직렬화로 사용 가능합니다.
node:cluster
🟡 핸들과 파일 디스크립터는 워커 간에 전달할 수 없으므로 현재로서는 Linux 에서만 프로세스 간 HTTP 요청 부하 분산이 지원됩니다 (SO_REUSEPORT 통해). 그렇지 않으면 구현되었지만 아직 충분히 테스트되지 않았습니다.
node:crypto
🟡 secureHeapUsed, setEngine, setFips 누락.
node:domain
🟡 Domain, active 누락.
node:http2
🟡 클라이언트와 서버가 구현되었습니다 (gRPC 테스트 스위트의 95.25% 통과). options.allowHTTP1, options.enableConnectProtocol, ALTSVC 확장, http2stream.pushStream 누락.
node:module
🟡 syncBuiltinESMExports, Module#load() 누락. require.cache 재정의는 ESM 및 CJS 모듈에서 지원됩니다. module._extensions, module._pathCache, module._cache 는 no-op 입니다. 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 는 V8 의 와이어 형식 대신 JavaScriptCore 의 와이어 형식을 사용합니다. 다른 메서드는 구현되지 않았습니다. 프로파일링은 대신 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
🟡 부분적으로 구현됨. mocks, snapshots, timers 누락. 대신 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
🟢 구현됨. 이는 전역 네임스페이스의 모든 객체를 포함하는 객체입니다. contents 는 추가 접두사 없이 사용 가능하므로 직접 참조하는 경우는 드뭅니다 (예: global.__dirname 대신 __dirname).
globalThis
🟢 global 에 별칭.
Headers
🟢 완전히 구현됨.
MessageChannel
🟢 완전히 구현됨.
MessageEvent
🟢 완전히 구현됨.
MessagePort
🟢 완전히 구현됨.
module
🟢 완전히 구현됨.
PerformanceEntry
🟢 완전히 구현됨.
PerformanceMark
🟢 완전히 구현됨.
PerformanceMeasure
🟢 완전히 구현됨.
PerformanceObserver
🟢 완전히 구현됨.
PerformanceObserverEntryList
🟢 완전히 구현됨.
PerformanceResourceTiming
🟢 완전히 구현됨.
performance
🟢 완전히 구현됨.
process
🟡 대부분 구현됨. process.binding(일부 패키지가 의존하는 내부 Node.js 바인딩) 은 부분적으로 구현됨. process.title 은 현재 macOS 및 Linux 에서 no-op 입니다. getActiveResourcesInfo, setActiveResourcesInfo, getActiveResources, setSourceMapsEnabled 는 스텁입니다. process.loadEnvFile, process.getBuiltinModule 와 같은 새로운 API 는 아직 구현되지 않았습니다.
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
🟢 완전히 구현됨.