【Bun中文文档-Runtime】Node.js compatibility

634 阅读3分钟

Bun 致力于实现完整的 Node.js API 兼容性。大多数针对Node.js环境的npm包都可以直接在 Bun 中使用;确保兼容性的最佳方法是尝试使用它。

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

内置模块

node:assert

🟢 完全实现。

node:async_hooks

🟡 仅实现了AsyncLocalStorageAsyncResource

node:buffer

🟢 完全实现。

node:child_process

🟡 缺少Stream stdio,proc.gidproc.uid。IPC 部分支持,仅与其他bun进程一起使用时有效。

node:cluster

🔴 未实现。

node:console

🟡 缺少Console构造函数。

node:crypto

🟡 缺少crypto.Certificate crypto.ECDH crypto.KeyObject crypto.X509Certificate crypto.checkPrime{Sync} crypto.createPrivateKey crypto.createPublicKey crypto.createSecretKey crypto.diffieHellman crypto.generateKey{Sync} crypto.generateKeyPair{Sync} crypto.generatePrime{Sync} crypto.getCipherInfo crypto.{get|set}Fips crypto.hkdf crypto.hkdfSync crypto.secureHeapUsed crypto.setEngine crypto.sign crypto.verify。某些方法尚未优化。

node:dgram

🔴 未实现。

node:diagnostics_channel

🟢 完全实现。

node:dns

🟢 完全实现。

node:domain

🟢 完全实现。

node:events

🟡 缺少on

node:fs

🟡 缺少fs.fdatasync{Sync} fs.opendir{Sync}fs.promises.open错误地返回文件描述符,而不是FileHandle

node:http

🟢 完全实现。

node:http2

🔴 未实现。

node:https

🟢 完全实现。

node:inspector

🔴 未实现。

node:module

🟢 完全实现。

node:net

🟡 缺少net.{get|set}DefaultAutoSelectFamily net.SocketAddress net.BlockList

node:os

🟢 完全实现。

node:path

🟢 完全实现。

node:perf_hooks

🟡 仅实现了perf_hooks.performance.now()perf_hooks.performance.timeOrigin。建议使用全局的performance而不是perf_hooks.performance

node:process

🟡 请参阅process全局对象。

node:punycode

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

node:querystring

🟢 完全实现。

node:readline

🟢 完全实现。

node:repl

🔴 未实现。

node:stream

🟢 完全实现。

node:string_decoder

🟢 完全实现。

node:sys

🟡 请参阅node:util

node:timers

🟢 建议使用全局的setTimeout等,而不是timers模块。

node:tls

🟡 缺少tls.createSecurePair

node:trace_events

🔴 未实现。

node:tty

🟢 完全实现。

node:url

🟡 缺少url.domainTo{ASCII|Unicode}。建议使用全局的URLURLSearchParams而不是url模块。

node:util

🟡 缺少util.MIMEParams util.MIMEType util.getSystemErrorMap() util.getSystemErrorName() util.parseArgs() util.stripVTControlCharacters() util.transferableAbortController() util.transferableAbortSignal()

node:v8

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

node:vm

🟡 核心功能

可用,但未实现 VM 模块。可以使用ShadowRealm

node:wasi

🟡 部分实现。

node:worker_threads

🟡 Worker不支持以下选项:evalargvexecArgvstdinstdoutstderrtrackedUnmanagedFdsresourceLimits。缺少markAsUntransferablemoveMessagePortToContextgetHeapSnapshot

node:zlib

🟡 缺少zlib.brotli*。尚未进行优化。

以下是 Node.js 和 Bun 当前兼容性状态的全局对象列表:

AbortController

🟢 完全实现。

AbortSignal

🟢 完全实现。

Blob

🟢 完全实现。

Buffer

🟡 base64base64url 编码的实现不完整。

ByteLengthQueuingStrategy

🟢 完全实现。

__dirname

🟢 完全实现。

__filename

🟢 完全实现。

atob()

🟢 完全实现。

BroadcastChannel

🟢 完全实现。

btoa()

🟢 完全实现。

clearImmediate()

🟢 完全实现。

clearInterval()

🟢 完全实现。

clearTimeout()

🟢 完全实现。

CompressionStream

🔴 未实现。

console

🟡 缺少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.allowedNodeEnvironmentFlags process.channel process.constrainedMemory() process.getActiveResourcesInfo/setActiveResourcesInfo() process.setuid/setgid/setegid/seteuid/setgroups() process.hasUncaughtExceptionCaptureCallback process.initGroups() process.report process.resourceUsage()

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

🟢 完全实现。