Skip to content

Cada día, Bun se acerca más al 100% de compatibilidad con la API de Node.js. Hoy, frameworks populares como Next.js, Express y millones de paquetes npm destinados a Node funcionan con Bun. Para asegurar la compatibilidad, ejecutamos miles de pruebas de la suite de pruebas de Node.js antes de cada lanzamiento de Bun.

Si un paquete funciona en Node.js pero no funciona en Bun, lo consideramos un bug en Bun. Por favor abre un issue y lo solucionaremos.

Esta página se actualiza regularmente para reflejar el estado de compatibilidad de la última versión de Bun. La información a continuación refleja la compatibilidad de Bun con Node.js v23.

Módulos incorporados de Node.js

node:assert

🟢 Totalmente implementado.

node:buffer

🟢 Totalmente implementado.

node:console

🟢 Totalmente implementado.

node:dgram

🟢 Totalmente implementado. > 90% de la suite de pruebas de Node.js pasa.

node:diagnostics_channel

🟢 Totalmente implementado.

node:dns

🟢 Totalmente implementado. > 90% de la suite de pruebas de Node.js pasa.

node:events

🟢 Totalmente implementado. 100% de la suite de pruebas de Node.js pasa. EventEmitterAsyncResource usa AsyncResource por debajo.

node:fs

🟢 Totalmente implementado. 92% de la suite de pruebas de Node.js pasa.

node:http

🟢 Totalmente implementado. El cuerpo de la solicitud de cliente saliente actualmente se almacena en búfer en lugar de transmitirse.

node:https

🟢 Las APIs están implementadas, pero Agent no siempre se usa todavía.

node:os

🟢 Totalmente implementado. 100% de la suite de pruebas de Node.js pasa.

node:path

🟢 Totalmente implementado. 100% de la suite de pruebas de Node.js pasa.

node:punycode

🟢 Totalmente implementado. 100% de la suite de pruebas de Node.js pasa, obsoleto por Node.js.

node:querystring

🟢 Totalmente implementado. 100% de la suite de pruebas de Node.js pasa.

node:readline

🟢 Totalmente implementado.

node:stream

🟢 Totalmente implementado.

node:string_decoder

🟢 Totalmente implementado. 100% de la suite de pruebas de Node.js pasa.

node:timers

🟢 Se recomienda usar setTimeout global, etc. en su lugar.

node:tty

🟢 Totalmente implementado.

node:url

🟢 Totalmente implementado.

node:zlib

🟢 Totalmente implementado. 98% de la suite de pruebas de Node.js pasa.

node:async_hooks

🟡 AsyncLocalStorage y AsyncResource están implementados. Los hooks de promesas v8 no se llaman, y su uso está fuertemente desaconsejado.

node:child_process

🟡 Faltan proc.gid proc.uid. La clase Stream no está exportada. IPC no puede enviar manejadores de socket. IPC Node.js ↔ Bun se puede usar con serialización JSON.

node:cluster

🟡 Los manejadores y descriptores de archivos no se pueden pasar entre workers, lo que significa que el balanceo de carga de solicitudes HTTP a través de procesos solo está soportado en Linux en este momento (vía SO_REUSEPORT). Por lo demás, implementado pero no probado en batalla.

node:crypto

🟡 Faltan secureHeapUsed setEngine setFips

node:domain

🟡 Faltan Domain active

node:http2

🟡 El cliente y servidor están implementados (95.25% de la suite de pruebas de gRPC pasa). Faltan options.allowHTTP1, options.enableConnectProtocol, extensión ALTSVC, y http2stream.pushStream.

node:module

🟡 Faltan syncBuiltinESMExports, Module#load(). Sobrescribir require.cache está soportado para módulos ESM y CJS. module._extensions, module._pathCache, module._cache son no-ops. module.register no está implementado y recomendamos usar un Bun.plugin mientras tanto.

node:net

🟢 Totalmente implementado.

node:perf_hooks

🟡 Las APIs están implementadas, pero la suite de pruebas de Node.js aún no pasa para este módulo.

node:process

🟡 Ver global process.

node:sys

🟡 Ver node:util.

node:tls

🟡 Falta tls.createSecurePair.

node:util

🟡 Faltan getCallSite getCallSites getSystemErrorMap getSystemErrorMessage transferableAbortSignal transferableAbortController

node:v8

🟡 writeHeapSnapshot y getHeapSnapshot están implementados. serialize y deserialize usan el formato wire de JavaScriptCore en lugar de V8. Otros métodos no están implementados. Para perfilado, usa bun:jsc en su lugar.

node:vm

🟡 La funcionalidad principal y los módulos ES están implementados, incluyendo vm.Script, vm.createContext, vm.runInContext, vm.runInNewContext, vm.runInThisContext, vm.compileFunction, vm.isContext, vm.Module, vm.SourceTextModule, vm.SyntheticModule, y soporte importModuleDynamically. Opciones como timeout y breakOnSigint están totalmente soportadas. Faltan vm.measureMemory y alguna funcionalidad cachedData.

node:wasi

🟡 Parcialmente implementado.

node:worker_threads

🟡 Worker no soporta las siguientes opciones: stdin stdout stderr trackedUnmanagedFds resourceLimits. Faltan markAsUntransferable moveMessagePortToContext.

node:inspector

🔴 No implementado.

node:repl

🔴 No implementado.

node:sqlite

🔴 No implementado.

node:test

🟡 Parcialmente implementado. Faltan mocks, snapshots, timers. Usa bun:test en su lugar.

node:trace_events

🔴 No implementado.

Globales de Node.js

La tabla a continuación lista todos los globales implementados por Node.js y el estado de compatibilidad actual de Bun.

AbortController

🟢 Totalmente implementado.

AbortSignal

🟢 Totalmente implementado.

Blob

🟢 Totalmente implementado.

Buffer

🟢 Totalmente implementado.

ByteLengthQueuingStrategy

🟢 Totalmente implementado.

__dirname

🟢 Totalmente implementado.

__filename

🟢 Totalmente implementado.

atob()

🟢 Totalmente implementado.

Atomics

🟢 Totalmente implementado.

BroadcastChannel

🟢 Totalmente implementado.

btoa()

🟢 Totalmente implementado.

clearImmediate()

🟢 Totalmente implementado.

clearInterval()

🟢 Totalmente implementado.

clearTimeout()

🟢 Totalmente implementado.

CompressionStream

🟢 Totalmente implementado.

console

🟢 Totalmente implementado.

CountQueuingStrategy

🟢 Totalmente implementado.

Crypto

🟢 Totalmente implementado.

SubtleCrypto (crypto)

🟢 Totalmente implementado.

CryptoKey

🟢 Totalmente implementado.

CustomEvent

🟢 Totalmente implementado.

DecompressionStream

🟢 Totalmente implementado.

Event

🟢 Totalmente implementado.

EventTarget

🟢 Totalmente implementado.

exports

🟢 Totalmente implementado.

fetch

🟢 Totalmente implementado.

FormData

🟢 Totalmente implementado.

global

🟢 Implementado. Este es un objeto que contiene todos los objetos en el espacio de nombres global. Rara vez se referencia directamente, ya que su contenido está disponible sin un prefijo adicional, ej. __dirname en lugar de global.__dirname.

globalThis

🟢 Alias de global.

Headers

🟢 Totalmente implementado.

MessageChannel

🟢 Totalmente implementado.

MessageEvent

🟢 Totalmente implementado.

MessagePort

🟢 Totalmente implementado.

module

🟢 Totalmente implementado.

PerformanceEntry

🟢 Totalmente implementado.

PerformanceMark

🟢 Totalmente implementado.

PerformanceMeasure

🟢 Totalmente implementado.

PerformanceObserver

🟢 Totalmente implementado.

PerformanceObserverEntryList

🟢 Totalmente implementado.

PerformanceResourceTiming

🟢 Totalmente implementado.

performance

🟢 Totalmente implementado.

process

🟡 Mayormente implementado. process.binding (bindings internos de Node.js en los que algunos paquetes dependen) está parcialmente implementado. process.title actualmente es un no-op en macOS y Linux. getActiveResourcesInfo setActiveResourcesInfo, getActiveResources y setSourceMapsEnabled son stubs. APIs más nuevas como process.loadEnvFile y process.getBuiltinModule aún no están implementadas.

queueMicrotask()

🟢 Totalmente implementado.

ReadableByteStreamController

🟢 Totalmente implementado.

ReadableStream

🟢 Totalmente implementado.

ReadableStreamBYOBReader

🟢 Totalmente implementado.

ReadableStreamBYOBRequest

🟢 Totalmente implementado.

ReadableStreamDefaultController

🟢 Totalmente implementado.

ReadableStreamDefaultReader

🟢 Totalmente implementado.

require()

🟢 Totalmente implementado, incluyendo require.main, require.cache, require.resolve.

Response

🟢 Totalmente implementado.

Request

🟢 Totalmente implementado.

setImmediate()

🟢 Totalmente implementado.

setInterval()

🟢 Totalmente implementado.

setTimeout()

🟢 Totalmente implementado.

structuredClone()

🟢 Totalmente implementado.

SubtleCrypto

🟢 Totalmente implementado.

DOMException

🟢 Totalmente implementado.

TextDecoder

🟢 Totalmente implementado.

TextDecoderStream

🟢 Totalmente implementado.

TextEncoder

🟢 Totalmente implementado.

TextEncoderStream

🟢 Totalmente implementado.

TransformStream

🟢 Totalmente implementado.

TransformStreamDefaultController

🟢 Totalmente implementado.

URL

🟢 Totalmente implementado.

URLSearchParams

🟢 Totalmente implementado.

WebAssembly

🟢 Totalmente implementado.

WritableStream

🟢 Totalmente implementado.

WritableStreamDefaultController

🟢 Totalmente implementado.

WritableStreamDefaultWriter

🟢 Totalmente implementado.

Bun por www.bunjs.com.cn editar