Skip to content

每一天,Bun 都更接近 100% Node.js API 兼容性。如今,像 Next.js、Express 等流行框架,以及数百万个为 Node 设计的 npm 包都能在 Bun 上正常工作。为了确保兼容性,我们在每次发布 Bun 之前都会运行 Node.js 测试套件中的数千个测试。

如果一个包在 Node.js 中有效但在 Bun 中无效,我们认为这是 Bun 的一个 bug。 请 提交问题,我们会修复它。

此页面会定期更新以反映最新版本 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 promise hooks 未被调用,其使用被 强烈不推荐。

node:child_process ​

🟡 缺少 proc.gid proc.uid。Stream 类未导出。IPC 无法发送 socket 句柄。Node.js ↔ Bun IPC 可以与 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 使用 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 ​

🟡 部分实现。缺少 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 ​

🟢 已实现。这是一个包含全局命名空间中所有对象的对象。它很少被直接引用,因为其内容无需额外前缀即可使用,例如 __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 ​

🟢 完全实现。