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
, node:assert/strict
✅
Fully supported.
node:async_hooks
ℹ️
AsyncLocalStorage
is supported. AsyncResource
, executionAsyncId
, and createHook
are non-functional stubs.
node:buffer
✅
Fully supported.
node:child_process
ℹ️
The ipc
and overlapped
stdio options are missing. Passing file descriptors by an integer value is missing.
node:cluster
❌
All exports are non-functional stubs.
node:console
✅
Fully supported.
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:dgram
✅
Fully supported.
node:diagnostics_channel
✅
Fully supported.
node:dns
ℹ️
Missing dns.resolve*
with ttl
option.
node:domain
❌
All exports are non-functional stubs.
node:events
✅
Fully supported.
node:fs
, node:fs/promises
ℹ️
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:http
ℹ️
createConnection
option is currently not supported.
node:http2
ℹ️
Partially supported, major work in progress to enable grpc-js
.
node:https
ℹ️
Missing https.Server.opts.cert
and https.Server.opts.key
array type.
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:module
✅
Fully supported.
node:net
ℹ️
Missing net.Socket.prototype.constructor
with fd
option.
node:os
✅
Fully supported.
node:path
✅
Fully supported.
node:perf_hooks
ℹ️
Missing perf_hooks.eventLoopUtilization
, perf_hooks.timerify
, perf_hooks.monitorEventLoopDelay
.
node:punycode
✅
Fully supported.
node:process
ℹ️
Missing disconnect
, message
, multipleResolves
, rejectionHandled
and worker
events.
node:querystring
✅
Fully supported.
node:readline
✅
Fully supported.
node:repl
ℹ️
builtinModules
and _builtinLibs
are supported. Missing REPLServer.prototype.constructor
and start()
.
node:stream
, node:stream/consumers
, node:stream/promises
, node:stream/web
✅
Fully supported.
node:string_decoder
ℹ️
Missing decoding of ascii
, latin1
and utf16le
decoding options.
node:sys
✅
Fully supported.
node:test
ℹ️
Currently only test
API is supported.
node:timers
, node:timers/promises
✅
Fully supported.
node:tls
ℹ️
Missing createSecurePair
.
node:trace_events
❌
All exports are non-functional stubs.
node:tty
ℹ️
Missing ReadStream
and WriteStream
implementation.
node:util
✅
Fully supported.
node:url
✅
Fully supported.
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:vm
ℹ️
runInThisContext
is supported. Other APIs are not polyfilled and will throw and error.
node:wasi
❌
All exports are non-functional stubs.
node:worker_threads
ℹ️
Missing parentPort.emit
, parentPort.removeAllListeners
, markAsUntransferable
, moveMessagePortToContext
, receiveMessageOnPort
, Worker.prototype.getHeapSnapshot
.
node:zlib
ℹ️
Missing Options.prototype.constructor
, BrotliOptions.prototype.constructor
, BrotliDecompress.prototype.constructor
, ZlibBase.prototype.constructor
.
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.