Bun

Node.js 兼容性

Bun 旨在实现完整的 Node.js API 兼容性。大多数针对 Node.js 环境的 npm 包都可以直接与 Bun 一起使用;最直接的了解方法就是尝试一下。

此页面会定期更新,以反映最新版本 Bun 的兼容性状态。以下信息反映了 Bun 与 Node.js v20 的兼容性。如果您在使用特定包时遇到任何错误,请 提交问题。提交兼容性错误问题有助于我们确定下一步的工作重点。

内置模块

node:assert

🟢 完全实现。

node:async_hooks

🟡 仅实现了 AsyncLocalStorageAsyncResourceAsyncResource 缺少 bind

node:buffer

🟢 完全实现。

node:child_process

🟡 缺少 Stream stdio、proc.gid proc.uid。IPC 无法发送套接字句柄,并且仅适用于其他 bun 进程。

node:cluster

🔴 未实现。

node:console

🟢 完全实现。

node:crypto

🟡 缺少 Certificate ECDH X509Certificate checkPrime checkPrimeSync diffieHellman generatePrime generatePrimeSync getCipherInfo getFips hkdf hkdfSync secureHeapUsed setEngine setFips

某些方法尚未优化。

node:dgram

🟡 缺少 setBroadcast setTTL setMulticastTTL setMulticastLoopback setMulticastInterface addMembership dropMembership addSourceSpecificMembership dropSourceSpecificMembership

node:diagnostics_channel

🟢 完全实现。

node:dns

🟡 缺少 cancel setServers getDefaultResultOrder

node:domain

🟡 缺少 Domain active

node:events

🟡 缺少 addAbortListener events.getMaxListeners

node:fs

🟡 缺少 statfs statfsSync, opendirSyncDir 已部分实现。

node:http

🟢 完全实现。

node:http2

🟡 支持客户端,但不支持服务器。

node:https

🟢 完全实现。

node:inspector

🔴 未实现。

node:module

🟡 缺少 runMain syncBuiltinESMExports, Module#load()。尝试覆盖或修补模块缓存将失败。

node:net

🟡 缺少 BlockList SocketAddress Stream

node:os

🟢 完全实现。

node:path

🟢 完全实现。

node:perf_hooks

🟡 缺少 createHistogram monitorEventLoopDelay。建议使用全局 performance 代替 perf_hooks.performance

node:process

🟡 请参阅 process 全局。

node:punycode

🟢 已完全实现。Node.js 已弃用。

node:querystring

🟢 完全实现。

node:readline

🟢 完全实现。

node:repl

🔴 未实现。

node:stream

🟡 缺少 getDefaultHighWaterMark setDefaultHighWaterMark toWeb

node:string_decoder

🟢 完全实现。

node:sys

🟡 请参阅 node:util

node:test

🔴 未实现。请改用 bun:test

node:timers

🟢 建议改用全局 setTimeout 等。

node:tls

🟡 缺少 tls.createSecurePair

node:trace_events

🔴 未实现。

node:tty

🟢 完全实现。

node:url

🟢 完全实现。

node:util

🟡 缺少 MIMEParams MIMEType aborted debug getSystemErrorMap getSystemErrorName transferableAbortController transferableAbortSignal stripVTControlCharacters

node:v8

🔴 serializedeserialize 使用 JavaScriptCore 的线格式,而不是 V8 的。否则,未实现。对于性能分析,请使用 bun:jsc

node:vm

🟡 核心功能可用,但未实现实验性 VM ES 模块,包括 vm.Modulevm.SourceTextModulevm.SyntheticModuleimportModuleDynamicallyvm.measureMemory。尚未实现 timeoutbreakOnSigintcachedData 等选项。上下文化选项的 this 值有一个错误,即没有正确的原型。

node:wasi

🟡 部分实现。

node:worker_threads

🟡 Worker 不支持以下选项:eval stdin stdout stderr trackedUnmanagedFds resourceLimits。缺少 markAsUntransferable moveMessagePortToContext getHeapSnapshot

node:zlib

🟡 缺少 BrotliCompress BrotliDecompress brotliCompressSync brotliDecompress brotliDecompressSync createBrotliCompress createBrotliDecompress。未优化。

全局变量

下表列出了 Node.js 和 Bun 当前兼容性状态实现的所有全局变量。

AbortController

🟢 完全实现。

AbortSignal

🟢 完全实现。

Blob

🟢 完全实现。

Buffer

🟡 base64base64url 编码的实现不完整。

ByteLengthQueuingStrategy

🟢 完全实现。

__dirname

🟢 完全实现。

__filename

🟢 完全实现。

atob()

🟢 完全实现。

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

🟡 缺少 domain hasUncaughtExceptionCaptureCallback initgroups resourceUsage setUncaughtExceptionCaptureCallback setegid seteuid setgid setgroups setuid allowedNodeEnvironmentFlags getActiveResourcesInfo setActiveResourcesInfo moduleLoadList setSourceMapsEnabled channelprocess.binding 已部分实现。

queueMicrotask()

🟢 完全实现。

ReadableByteStreamController

🟢 完全实现。

ReadableStream

🟢 完全实现。

ReadableStreamBYOBReader

🟢 完全实现。

ReadableStreamBYOBRequest

🟢 完全实现。

ReadableStreamDefaultController

🟢 完全实现。

ReadableStreamDefaultReader

🟢 完全实现。

require()

🟢 完全实现,包括 require.mainrequire.cacherequire.resolve

Response

🟢 完全实现。

Request

🟢 完全实现。

setImmediate()

🟢 完全实现。

setInterval()

🟢 完全实现。

setTimeout()

🟢 完全实现。

structuredClone()

🟢 完全实现。

SubtleCrypto

🟢 完全实现。

DOMException

🟢 完全实现。

TextDecoder

🟢 完全实现。

TextDecoderStream

🔴 未实现。

TextEncoder

🟢 完全实现。

TextEncoderStream

🔴 未实现。

TransformStream

🟢 完全实现。

TransformStreamDefaultController

🟢 完全实现。

URL

🟡 URL.createObjectURL 缺失。请参阅 问题 #3925

URLSearchParams

🟢 完全实现。

WebAssembly

🟢 完全实现。

WritableStream

🟢 完全实现。

WritableStreamDefaultController

🟢 完全实现。

WritableStreamDefaultWriter

🟢 完全实现。