Skip to main content

Node API Compatibility List

Deno provides polyfills for a number of built-in Node.js modules and globals. Node compatibility is an ongoing project - help us identify gaps and let us know which modules you need by opening an issue on GitHub.

Built-in module support

✅ = Full support
ℹ️ = Partial support
❌ = Stubs only
node:assert

Fully supported.

Node.js docs

node:async_hooks
ℹ️

AsyncLocalStorage is supported. AsyncResource, executionAsyncId, and createHook are non-functional stubs.

Node.js docs

node:buffer

Fully supported.

Node.js docs

node:child_process
ℹ️

The ipc and overlapped stdio options are missing. Passing file descriptors by an integer value is missing.

Node.js docs

node:cluster

All exports are non-functional stubs.

Node.js docs

node:console

Fully supported.

Node.js docs

node:crypto
ℹ️

Missing Certificate class, crypto.Cipheriv.prototype.setAutoPadding, crypto.Decipheriv.prototype.setAutoPadding, crypto.getCipherInfo, crypto.publicDecrypt, crypto.ECDH.prototype.convertKey, crypto.diffieHellman, x448 option for generateKeyPair, crypto.KeyObject, safe, add and rem options for generatePrime, crypto.Sign.prototype.sign and crypto.Verify.prototype.verify with non BinaryLike input, crypto.secureHeapUsed, crypto.setEngine, legacy methods of crypto.X509Certificate.

Node.js docs

node:dgram
ℹ️

Some dgram.Socket instance methods are non-functional stubs:

  • addMembership
  • addSourceSpecificMembership
  • dropMembership
  • dropSourceSpecificMembership
  • setBroadcast
  • setMulticastInterface
  • setMulticastLoopback
  • setMulticastTtl
  • setTtl
  • ref
  • unref

Node.js docs

node:diagnostics_channel

Fully supported.

Node.js docs

node:dns
ℹ️

Missing dns.resolve* with ttl option.

Node.js docs

node:domain

All exports are non-functional stubs.

Node.js docs

node:events

Fully supported.

Node.js docs

node:fs
ℹ️
node:fs

Missing utf16le, latin1 and ucs2 encoding for fs.writeFile and fs.writeFileSync. Missing Dirent.isBlockDevice, Dirent.isCharacterDevice, Dirent.isFIFO, Dirent.isSocket, FSWatcher.ref, FSWatcher.unref.

node:fs/promises

Missing lchmod, lchown, lutimes.

Node.js docs

node:http
ℹ️

createConnection option is currently not supported.

Node.js docs

node:http2
ℹ️

Partially supported, major work in progress to enable grpc-js.

Node.js docs

node:https
ℹ️

Missing https.Server.opts.cert and https.Server.opts.key array type.

Node.js docs

node:inspector
ℹ️

console is supported. Other APIs are stubs and will throw an error. Due to security implications the Deno team does not plan to polyfill these APIs.

Node.js docs

node:module

Fully supported.

Node.js docs

node:net
ℹ️

Missing net.Socket.prototype.constructor with fd option.

Node.js docs

node:os

Fully supported.

Node.js docs

node:path

Fully supported.

Node.js docs

node:perf_hooks
ℹ️

Missing perf_hooks.eventLoopUtilization, perf_hooks.timerify, perf_hooks.monitorEventLoopDelay.

Node.js docs

node:punycode

Fully supported.

Node.js docs

node:process
ℹ️

Missing disconnect, message, multipleResolves, rejectionHandled and worker events.

Node.js docs

node:querystring

Fully supported.

Node.js docs

node:readline

Fully supported.

Node.js docs

node:repl
ℹ️

builtinModules and _builtinLibs are supported. Missing REPLServer.prototype.constructor and start().

Node.js docs

node:stream

Fully supported.

Node.js docs

node:string_decoder
ℹ️

Missing decoding of ascii, latin1 and utf16le decoding options.

Node.js docs

node:sys

Fully supported.

Node.js docs

node:test
ℹ️

Currently only test API is supported.

Node.js docs

node:timers

Fully supported.

Node.js docs

node:tls
ℹ️

Missing createSecurePair.

Node.js docs

node:trace_events

All exports are non-functional stubs.

Node.js docs

node:tty
ℹ️

Missing ReadStream and WriteStream implementation.

Node.js docs

node:util

Fully supported.

Node.js docs

node:url

Fully supported.

Node.js docs

node:v8
ℹ️

cachedDataVersionTag and getHeapStatistics are supported. setFlagsFromStrings is a noop. Other APIs are not supported and will throw and error. The other APIs could be polyfilled, but due inherent lack of format stability between the V8 versions, the Deno team is considering requiring a special flag to use them.

Node.js docs

node:vm
ℹ️

runInThisContext is supported. Other APIs are not polyfilled and will throw and error.

Node.js docs

node:wasi

All exports are non-functional stubs.

Node.js docs

node:worker_threads
ℹ️

Missing parentPort.emit, parentPort.removeAllListeners, markAsUntransferable, moveMessagePortToContext, receiveMessageOnPort, Worker.prototype.getHeapSnapshot.

Node.js docs

node:zlib
ℹ️

Missing Options.prototype.constructor, BrotliOptions.prototype.constructor, BrotliDecompress.prototype.constructor, ZlibBase.prototype.constructor.

Node.js docs

Globals

This is the list of Node globals that Deno supports. These globals are only available in the npm package scope. In your own code you can use them by importing them from the relevant node: module.

Global nameStatus
AbortController
AbortSignal
Blob
Buffer
ByteLengthQueuingStrategy
__dirname
__filename
atob
BroadcastChannel
btoa
clearImmediate
clearInterval
clearTimeout
CompressionStream
console
CountQueuingStrategy
Crypto
CryptoKey
CustomEvent
CustomEvent
DecompressionStream
Event
EventTarget
exports
fetch
fetch
File
File
FormData
global
Headers
MessageChannel
MessageEvent
MessagePort
module
PerformanceEntry
PerformanceMark
PerformanceMeasure
PerformanceObserver
PerformanceObserverEntryList
PerformanceResourceTiming
performance
process
queueMicrotask
ReadableByteStreamController
ReadableStream
ReadableStreamBYOBReader
ReadableStreamBYOBRequest
ReadableStreamDefaultController
ReadableStreamDefaultReader
require
Response
Request
setImmediate
setInterval
setTimeout
structuredClone
structuredClone
SubtleCrypto
DOMException
TextDecoder
TextDecoderStream
TextEncoder
TextEncoderStream
TransformStream
TransformStreamDefaultController
URL
URLSearchParams
URLSearchParams
WebAssembly
WritableStream
WritableStreamDefaultController
WritableStreamDefaultWriter