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.
Fully supported built-in modules
node:assertnode:assert/strictnode:buffernode:consolenode:dgramnode:diagnostics_channelnode:eventsnode:modulenode:osnode:path,node:path/posix,node:path/win32node:punycodenode:querystringnode:readlinenode:stream,node:stream/consumers,node:stream/promises,node:stream/webnode:sysnode:timers,node:timers/promisesnode:urlnode:util,node:util/types
Partially supported built-in modules
ℹ️ = Partial support ❌ = Stubs only
node:async_hooksℹ️
AsyncLocalStorage is supported. AsyncResource, executionAsyncId, and createHook are non-functional stubs.
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: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:dnsℹ️
Missing dns.resolve* with ttl option.
node:domain❌
All exports are non-functional stubs.
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:netℹ️
Missing net.Socket.prototype.constructor with fd option.
node:perf_hooksℹ️
Missing perf_hooks.eventLoopUtilization, perf_hooks.timerify, perf_hooks.monitorEventLoopDelay.
node:processℹ️
Missing disconnect, message, multipleResolves, rejectionHandled and worker events.
node:replℹ️
builtinModules and _builtinLibs are supported. Missing REPLServer.prototype.constructor and start().
node:string_decoderℹ️
Missing decoding of ascii, latin1 and utf16le decoding options.
node:testℹ️
Currently only test API is supported.
node:tlsℹ️
Missing createSecurePair.
node:trace_events❌
All exports are non-functional stubs.
node:ttyℹ️
Missing ReadStream and WriteStream implementation.
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
These global objects are fully supported in Deno:
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.