Skip to content

毎日、Bun は 100% の Node.js API 互換性に近づいています。現在、Next.js、Express などの人気のあるフレームワークや、何百万もの Node.js 向けの 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 によって非推奨

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

🟡 AsyncLocalStorageAsyncResource が実装されています。v8 プロミスフックは呼び出されず、その使用は 強く非推奨 されています。

node:child_process

🟡 proc.gid proc.uid が不足しています。Stream クラスがエクスポートされていません。ソケットハンドルを送信できません。Node.js ↔ Bun IPC は JSON シリアライゼーションで使用できます。

node:cluster

🟡 ハンドルとファイルディスクリプタはワーカー間で渡せないため、プロセス間で HTTP リクエストの負荷分散を行うことは現時点では Linux でのみサポートされています(SO_REUSEPORT を介して)。それ以外の場合は実装されていますが、実戦テストはされていません。

node:crypto

🟡 secureHeapUsed setEngine setFips が不足しています。

node:domain

🟡 Domain active が不足しています。

node:http2

🟡 クライアントとサーバーが実装されています(gRPC のテストスイートの 95.25% がパスします)。options.allowHTTP1options.enableConnectProtocol、ALTSVC 拡張機能、および http2stream.pushStream が不足しています。

node:module

🟡 syncBuiltinESMExportsModule#load() が不足しています。require.cache のオーバーライドは ESM と CJS モジュールでサポートされています。module._extensionsmodule._pathCachemodule._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

🟡 writeHeapSnapshotgetHeapSnapshot が実装されています。serializedeserialize は V8 の代わりに JavaScriptCore のワイヤ形式を使用します。他のメソッドは実装されていません。プロファイリングの場合は、代わりに bun:jsc を使用してください。

node:vm

🟡 コア機能と ES モジュールが実装されています。vm.Scriptvm.createContextvm.runInContextvm.runInNewContextvm.runInThisContextvm.compileFunctionvm.isContextvm.Modulevm.SourceTextModulevm.SyntheticModule、および importModuleDynamically サポートを含みます。timeoutbreakOnSigint などのオプションは完全にサポートされています。vm.measureMemory と一部の cachedData 機能が不足しています。

node:wasi

🟡 一部実装。

node:worker_threads

🟡 Worker は以下のオプションをサポートしていません:stdin stdout stderr trackedUnmanagedFds resourceLimitsmarkAsUntransferable 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

🟢 実装済み。これはグローバルネームスペース内のすべてのオブジェクトを含むオブジェクトです。その内容は追加のプレフィックスなしで利用可能なため、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 setActiveResourcesInfogetActiveResourcessetSourceMapsEnabled はスタブです。process.loadEnvFileprocess.getBuiltinModule などの新しい API はまだ実装されていません。

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

🟢 完全実装。

URLSearchParams

🟢 完全実装。

WebAssembly

🟢 完全実装。

WritableStream

🟢 完全実装。

WritableStreamDefaultController

🟢 完全実装。

WritableStreamDefaultWriter

🟢 完全実装。

Bun by www.bunjs.com.cn 編集