Global objects#

Stability: 2 - Stable

These objects are available in all modules.

The following variables may appear to be global but are not. They exist only inthe scope ofCommonJS modules:

The objects listed here are specific to Node.js. There arebuilt-in objectsthat are part of the JavaScript language itself, which are also globallyaccessible.

Class:AbortController#

History
VersionChanges
v15.4.0

No longer experimental.

v15.0.0, v14.17.0

Added in: v15.0.0, v14.17.0

A utility class used to signal cancelation in selectedPromise-based APIs.The API is based on the Web API<AbortController>.

const ac =newAbortController();ac.signal.addEventListener('abort',() =>console.log('Aborted!'),                           {once:true });ac.abort();console.log(ac.signal.aborted);// Prints true

abortController.abort([reason])#

History
VersionChanges
v17.2.0, v16.14.0

Added the new optional reason argument.

v15.0.0, v14.17.0

Added in: v15.0.0, v14.17.0

  • reason<any> An optional reason, retrievable on theAbortSignal'sreason property.

Triggers the abort signal, causing theabortController.signal to emitthe'abort' event.

abortController.signal#

Added in: v15.0.0, v14.17.0

Class:AbortSignal#

Added in: v15.0.0, v14.17.0

TheAbortSignal is used to notify observers when theabortController.abort() method is called.

Static method:AbortSignal.abort([reason])#
History
VersionChanges
v17.2.0, v16.14.0

Added the new optional reason argument.

v15.12.0, v14.17.0

Added in: v15.12.0, v14.17.0

Returns a new already abortedAbortSignal.

Static method:AbortSignal.timeout(delay)#
Added in: v17.3.0, v16.14.0
  • delay<number> The number of milliseconds to wait before triggeringthe AbortSignal.

Returns a newAbortSignal which will be aborted indelay milliseconds.

Static method:AbortSignal.any(signals)#
Added in: v20.3.0, v18.17.0
  • signals<AbortSignal[]> TheAbortSignals of which to compose a newAbortSignal.

Returns a newAbortSignal which will be aborted if any of the providedsignals are aborted. ItsabortSignal.reason will be set to whicheverone of thesignals caused it to be aborted.

Event:'abort'#
Added in: v15.0.0, v14.17.0

The'abort' event is emitted when theabortController.abort() methodis called. The callback is invoked with a single object argument with asingletype property set to'abort':

const ac =newAbortController();// Use either the onabort property...ac.signal.onabort =() =>console.log('aborted!');// Or the EventTarget API...ac.signal.addEventListener('abort',(event) => {console.log(event.type);// Prints 'abort'}, {once:true });ac.abort();

TheAbortController with which theAbortSignal is associated will onlyever trigger the'abort' event once. We recommended that code checkthat theabortSignal.aborted attribute isfalse before adding an'abort'event listener.

Any event listeners attached to theAbortSignal should use the{ once: true } option (or, if using theEventEmitter APIs to attach alistener, use theonce() method) to ensure that the event listener isremoved as soon as the'abort' event is handled. Failure to do so mayresult in memory leaks.

abortSignal.aborted#
Added in: v15.0.0, v14.17.0
  • Type:<boolean> True after theAbortController has been aborted.
abortSignal.onabort#
Added in: v15.0.0, v14.17.0

An optional callback function that may be set by user code to be notifiedwhen theabortController.abort() function has been called.

abortSignal.reason#
Added in: v17.2.0, v16.14.0

An optional reason specified when theAbortSignal was triggered.

const ac =newAbortController();ac.abort(newError('boom!'));console.log(ac.signal.reason);// Error: boom!
abortSignal.throwIfAborted()#
Added in: v17.3.0, v16.17.0

IfabortSignal.aborted istrue, throwsabortSignal.reason.

Class:Blob#

Added in: v18.0.0

See<Blob>.

Class:Buffer#

Added in: v0.1.103

Used to handle binary data. See thebuffer section.

Class:ByteLengthQueuingStrategy#

History
VersionChanges
v23.11.0, v22.15.0

Marking the API stable.

v18.0.0

Added in: v18.0.0

A browser-compatible implementation ofByteLengthQueuingStrategy.

__dirname#

This variable may appear to be global but is not. See__dirname.

__filename#

This variable may appear to be global but is not. See__filename.

atob(data)#

Added in: v16.0.0

Stability: 3 - Legacy. UseBuffer.from(data, 'base64') instead.

Global alias forbuffer.atob().

An automated migration is available (source):

npx codemod@latest @nodejs/buffer-atob-btoa

Class:BroadcastChannel#

Added in: v18.0.0

See<BroadcastChannel>.

btoa(data)#

Added in: v16.0.0

Stability: 3 - Legacy. Usebuf.toString('base64') instead.

Global alias forbuffer.btoa().

clearImmediate(immediateObject)#

Added in: v0.9.1

clearImmediate is described in thetimers section.

clearInterval(intervalObject)#

Added in: v0.0.1

clearInterval is described in thetimers section.

clearTimeout(timeoutObject)#

Added in: v0.0.1

clearTimeout is described in thetimers section.

Class:CloseEvent#

Added in: v23.0.0

A browser-compatible implementation of<CloseEvent>. Disable this APIwith the--no-experimental-websocket CLI flag.

Class:CompressionStream#

History
VersionChanges
v24.7.0, v22.20.0

format now acceptsbrotli value.

v23.11.0, v22.15.0

Marking the API stable.

v18.0.0

Added in: v18.0.0

A browser-compatible implementation ofCompressionStream.

console#

Added in: v0.1.100

Used to print to stdout and stderr. See theconsole section.

Class:CountQueuingStrategy#

History
VersionChanges
v23.11.0, v22.15.0

Marking the API stable.

v18.0.0

Added in: v18.0.0

A browser-compatible implementation ofCountQueuingStrategy.

Class:Crypto#

History
VersionChanges
v23.0.0

No longer experimental.

v19.0.0

No longer behind--experimental-global-webcrypto CLI flag.

v17.6.0, v16.15.0

Added in: v17.6.0, v16.15.0

A browser-compatible implementation of<Crypto>. This global is availableonly if the Node.js binary was compiled with including support for thenode:crypto module.

crypto#

History
VersionChanges
v23.0.0

No longer experimental.

v19.0.0

No longer behind--experimental-global-webcrypto CLI flag.

v17.6.0, v16.15.0

Added in: v17.6.0, v16.15.0

A browser-compatible implementation of theWeb Crypto API.

Class:CryptoKey#

History
VersionChanges
v23.0.0

No longer experimental.

v19.0.0

No longer behind--experimental-global-webcrypto CLI flag.

v17.6.0, v16.15.0

Added in: v17.6.0, v16.15.0

A browser-compatible implementation of<CryptoKey>. This global is availableonly if the Node.js binary was compiled with including support for thenode:crypto module.

Class:CustomEvent#

History
VersionChanges
v23.0.0

No longer experimental.

v22.1.0, v20.13.0

CustomEvent is now stable.

v19.0.0

No longer behind--experimental-global-customevent CLI flag.

v18.7.0, v16.17.0

Added in: v18.7.0, v16.17.0

A browser-compatible implementation of<CustomEvent>.

Class:DecompressionStream#

History
VersionChanges
v24.7.0, v22.20.0

format now acceptsbrotli value.

v23.11.0, v22.15.0

Marking the API stable.

v18.0.0

Added in: v18.0.0

A browser-compatible implementation ofDecompressionStream.

ErrorEvent#

Added in: v25.0.0

A browser-compatible implementation of<ErrorEvent>.

Class:Event#

History
VersionChanges
v15.4.0

No longer experimental.

v15.0.0

Added in: v15.0.0

A browser-compatible implementation of theEvent class. SeeEventTarget andEvent API for more details.

Class:EventSource#

Added in: v22.3.0, v20.18.0

Stability: 1 - Experimental. Enable this API with the--experimental-eventsourceCLI flag.

A browser-compatible implementation of<EventSource>.

Class:EventTarget#

History
VersionChanges
v15.4.0

No longer experimental.

v15.0.0

Added in: v15.0.0

A browser-compatible implementation of theEventTarget class. SeeEventTarget andEvent API for more details.

exports#

This variable may appear to be global but is not. Seeexports.

fetch#

History
VersionChanges
v21.0.0

No longer experimental.

v18.0.0

No longer behind--experimental-fetch CLI flag.

v17.5.0, v16.15.0

Added in: v17.5.0, v16.15.0

A browser-compatible implementation of thefetch() function.

const res =awaitfetch('https://nodejs.org/api/documentation.json');if (res.ok) {const data =await res.json();console.log(data);}

The implementation is based uponundici, an HTTP/1.1 clientwritten from scratch for Node.js. You can figure out which version ofundici is bundledin your Node.js process reading theprocess.versions.undici property.

Custom dispatcher#

You can use a custom dispatcher to dispatch requests passing it in fetch's options object.The dispatcher must be compatible withundici'sDispatcher class.

fetch(url, {dispatcher:newMyAgent() });

It is possible to change the global dispatcher in Node.js by installingundici and usingthesetGlobalDispatcher() method. Calling this method will affect bothundici andNode.js.

import { setGlobalDispatcher }from'undici';setGlobalDispatcher(newMyAgent());

Related classes#

The following globals are available to use withfetch:

Class:File#

Added in: v20.0.0

See<File>.

Class:FormData#

History
VersionChanges
v21.0.0

No longer experimental.

v18.0.0

No longer behind--experimental-fetch CLI flag.

v17.6.0, v16.15.0

Added in: v17.6.0, v16.15.0

A browser-compatible implementation of<FormData>.

global#

Added in: v0.1.27

Stability: 3 - Legacy. UseglobalThis instead.

  • Type:<Object> The global namespace object.

In browsers, the top-level scope has traditionally been the global scope. Thismeans thatvar something will define a new global variable, except withinECMAScript modules. In Node.js, this is different. The top-level scope is notthe global scope;var something inside a Node.js module will be local to thatmodule, regardless of whether it is aCommonJS module or anECMAScript module.

Class:Headers#

History
VersionChanges
v21.0.0

No longer experimental.

v18.0.0

No longer behind--experimental-fetch CLI flag.

v17.5.0, v16.15.0

Added in: v17.5.0, v16.15.0

A browser-compatible implementation of<Headers>.

localStorage#

Added in: v22.4.0

A browser-compatible implementation oflocalStorage. Data is storedunencrypted in the file specified by the--localstorage-file CLI flag.The maximum amount of data that can be stored is 10 MB.Any modification of this data outside of the Web Storage API is not supported.Disable this API with the--no-webstorage (or its alias--no-experimental-webstorage) CLI flag.localStorage data is not stored per user or per request when used in the contextof a server, it is shared across all users and requests.

Class:MessageChannel#

Added in: v15.0.0

TheMessageChannel class. SeeMessageChannel for more details.

Class:MessageEvent#

Added in: v15.0.0

A browser-compatible implementation of<MessageEvent>.

Class:MessagePort#

Added in: v15.0.0

TheMessagePort class. SeeMessagePort for more details.

module#

This variable may appear to be global but is not. Seemodule.

Class:Navigator#

Added in: v21.0.0

Stability: 1.1 - Active development. Disable this API with the--no-experimental-global-navigator CLI flag.

A partial implementation of theNavigator API.

navigator#

Added in: v21.0.0

Stability: 1.1 - Active development. Disable this API with the--no-experimental-global-navigator CLI flag.

A partial implementation ofwindow.navigator.

navigator.hardwareConcurrency#

Added in: v21.0.0

Thenavigator.hardwareConcurrency read-only property returns the number oflogical processors available to the current Node.js instance.

console.log(`This process is running on${navigator.hardwareConcurrency} logical processors`);

navigator.language#

Added in: v21.2.0

Thenavigator.language read-only property returns a string representing thepreferred language of the Node.js instance. The language will be determined bythe ICU library used by Node.js at runtime based on thedefault language of the operating system.

The value is representing the language version as defined inRFC 5646.

The fallback value on builds without ICU is'en-US'.

console.log(`The preferred language of the Node.js instance has the tag '${navigator.language}'`);

navigator.languages#

Added in: v21.2.0
  • Type: {Array}

Thenavigator.languages read-only property returns an array of stringsrepresenting the preferred languages of the Node.js instance.By defaultnavigator.languages contains only the value ofnavigator.language, which will be determined by the ICU library used byNode.js at runtime based on the default language of the operating system.

The fallback value on builds without ICU is['en-US'].

console.log(`The preferred languages are '${navigator.languages}'`);

navigator.platform#

Added in: v21.2.0

Thenavigator.platform read-only property returns a string identifying theplatform on which the Node.js instance is running.

console.log(`This process is running on${navigator.platform}`);

navigator.userAgent#

Added in: v21.1.0

Thenavigator.userAgent read-only property returns user agentconsisting of the runtime name and major version number.

console.log(`The user-agent is${navigator.userAgent}`);// Prints "Node.js/21"

navigator.locks#

Added in: v24.5.0

Stability: 1 - Experimental

Thenavigator.locks read-only property returns aLockManager instance thatcan be used to coordinate access to resources that may be shared across multiplethreads within the same process. This global implementation matches the semanticsof thebrowserLockManager API.

// Request an exclusive lockawait navigator.locks.request('my_resource',async (lock) => {// The lock has been acquired.console.log(`Lock acquired:${lock.name}`);// Lock is automatically released when the function returns});// Request a shared lockawait navigator.locks.request('shared_resource', {mode:'shared' },async (lock) => {// Multiple shared locks can be held simultaneouslyconsole.log(`Shared lock acquired:${lock.name}`);});// Request an exclusive locknavigator.locks.request('my_resource',async (lock) => {// The lock has been acquired.console.log(`Lock acquired:${lock.name}`);// Lock is automatically released when the function returns}).then(() => {console.log('Lock released');});// Request a shared locknavigator.locks.request('shared_resource', {mode:'shared' },async (lock) => {// Multiple shared locks can be held simultaneouslyconsole.log(`Shared lock acquired:${lock.name}`);}).then(() => {console.log('Shared lock released');});

Seeworker_threads.locks for detailed API documentation.

Class:PerformanceEntry#

Added in: v19.0.0

ThePerformanceEntry class. SeePerformanceEntry for more details.

Class:PerformanceMark#

Added in: v19.0.0

ThePerformanceMark class. SeePerformanceMark for more details.

Class:PerformanceMeasure#

Added in: v19.0.0

ThePerformanceMeasure class. SeePerformanceMeasure for more details.

Class:PerformanceObserver#

Added in: v19.0.0

ThePerformanceObserver class. SeePerformanceObserver for more details.

Class:PerformanceObserverEntryList#

Added in: v19.0.0

ThePerformanceObserverEntryList class. SeePerformanceObserverEntryList for more details.

Class:PerformanceResourceTiming#

Added in: v19.0.0

ThePerformanceResourceTiming class. SeePerformanceResourceTiming formore details.

performance#

Added in: v16.0.0

Theperf_hooks.performance object.

process#

Added in: v0.1.7

The process object. See theprocess object section.

queueMicrotask(callback)#

Added in: v11.0.0

ThequeueMicrotask() method queues a microtask to invokecallback. Ifcallback throws an exception, theprocess object'uncaughtException'event will be emitted.

The microtask queue is managed by V8 and may be used in a similar manner totheprocess.nextTick() queue, which is managed by Node.js. Theprocess.nextTick() queue is always processed before the microtask queuewithin each turn of the Node.js event loop.

// Here, `queueMicrotask()` is used to ensure the 'load' event is always// emitted asynchronously, and therefore consistently. Using// `process.nextTick()` here would result in the 'load' event always emitting// before any other promise jobs.DataHandler.prototype.load =asyncfunctionload(key) {const hit =this._cache.get(key);if (hit !==undefined) {queueMicrotask(() => {this.emit('load', hit);    });return;  }const data =awaitfetchData(key);this._cache.set(key, data);this.emit('load', data);};

Class:ReadableByteStreamController#

History
VersionChanges
v23.11.0, v22.15.0

Marking the API stable.

v18.0.0

Added in: v18.0.0

A browser-compatible implementation ofReadableByteStreamController.

Class:ReadableStream#

History
VersionChanges
v23.11.0, v22.15.0

Marking the API stable.

v18.0.0

Added in: v18.0.0

A browser-compatible implementation ofReadableStream.

Class:ReadableStreamBYOBReader#

History
VersionChanges
v23.11.0, v22.15.0

Marking the API stable.

v18.0.0

Added in: v18.0.0

A browser-compatible implementation ofReadableStreamBYOBReader.

Class:ReadableStreamBYOBRequest#

History
VersionChanges
v23.11.0, v22.15.0

Marking the API stable.

v18.0.0

Added in: v18.0.0

A browser-compatible implementation ofReadableStreamBYOBRequest.

Class:ReadableStreamDefaultController#

History
VersionChanges
v23.11.0, v22.15.0

Marking the API stable.

v18.0.0

Added in: v18.0.0

A browser-compatible implementation ofReadableStreamDefaultController.

Class:ReadableStreamDefaultReader#

History
VersionChanges
v23.11.0, v22.15.0

Marking the API stable.

v18.0.0

Added in: v18.0.0

A browser-compatible implementation ofReadableStreamDefaultReader.

require()#

This variable may appear to be global but is not. Seerequire().

Class:Response#

History
VersionChanges
v21.0.0

No longer experimental.

v18.0.0

No longer behind--experimental-fetch CLI flag.

v17.5.0, v16.15.0

Added in: v17.5.0, v16.15.0

A browser-compatible implementation of<Response>.

Class:Request#

History
VersionChanges
v21.0.0

No longer experimental.

v18.0.0

No longer behind--experimental-fetch CLI flag.

v17.5.0, v16.15.0

Added in: v17.5.0, v16.15.0

A browser-compatible implementation of<Request>.

sessionStorage#

Added in: v22.4.0

Stability: 1.0 - Early development.

A browser-compatible implementation ofsessionStorage. Data is stored inmemory, with a storage quota of 10 MB.sessionStorage data persists only withinthe currently running process, and is not shared between workers.

setImmediate(callback[, ...args])#

Added in: v0.9.1

setImmediate is described in thetimers section.

setInterval(callback, delay[, ...args])#

Added in: v0.0.1

setInterval is described in thetimers section.

setTimeout(callback, delay[, ...args])#

Added in: v0.0.1

setTimeout is described in thetimers section.

Class:Storage#

Added in: v22.4.0

Stability: 1.0 - Early development.

A browser-compatible implementation of<Storage>. Disable this API with the--no-webstorage (or its alias--no-experimental-webstorage) CLI flag.

structuredClone(value[, options])#

Added in: v17.0.0

The WHATWGstructuredClone method.

Class:SubtleCrypto#

History
VersionChanges
v19.0.0

No longer behind--experimental-global-webcrypto CLI flag.

v17.6.0, v16.15.0

Added in: v17.6.0, v16.15.0

A browser-compatible implementation of<SubtleCrypto>. This global is availableonly if the Node.js binary was compiled with including support for thenode:crypto module.

Class:DOMException#

Added in: v17.0.0

The WHATWG<DOMException> class.

Class:TextDecoder#

Added in: v11.0.0

The WHATWGTextDecoder class. See theTextDecoder section.

Class:TextDecoderStream#

History
VersionChanges
v23.11.0, v22.15.0

Marking the API stable.

v18.0.0

Added in: v18.0.0

A browser-compatible implementation ofTextDecoderStream.

Class:TextEncoder#

Added in: v11.0.0

The WHATWGTextEncoder class. See theTextEncoder section.

Class:TextEncoderStream#

History
VersionChanges
v23.11.0, v22.15.0

Marking the API stable.

v18.0.0

Added in: v18.0.0

A browser-compatible implementation ofTextEncoderStream.

Class:TransformStream#

History
VersionChanges
v23.11.0, v22.15.0

Marking the API stable.

v18.0.0

Added in: v18.0.0

A browser-compatible implementation ofTransformStream.

Class:TransformStreamDefaultController#

History
VersionChanges
v23.11.0, v22.15.0

Marking the API stable.

v18.0.0

Added in: v18.0.0

A browser-compatible implementation ofTransformStreamDefaultController.

Class:URL#

Added in: v10.0.0

The WHATWGURL class. See theURL section.

Class:URLPattern#

Added in: v24.0.0

Stability: 1 - Experimental

The WHATWGURLPattern class. See theURLPattern section.

Class:URLSearchParams#

Added in: v10.0.0

The WHATWGURLSearchParams class. See theURLSearchParams section.

Class:WebAssembly#

Added in: v8.0.0

The object that acts as the namespace for all W3CWebAssembly related functionality. See theMozilla Developer Network for usage and compatibility.

Class:WebSocket#

History
VersionChanges
v22.4.0

No longer experimental.

v22.0.0

No longer behind--experimental-websocket CLI flag.

v21.0.0, v20.10.0

Added in: v21.0.0, v20.10.0

A browser-compatible implementation of<WebSocket>. Disable this APIwith the--no-experimental-websocket CLI flag.

Class:WritableStream#

History
VersionChanges
v23.11.0, v22.15.0

Marking the API stable.

v18.0.0

Added in: v18.0.0

A browser-compatible implementation ofWritableStream.

Class:WritableStreamDefaultController#

History
VersionChanges
v23.11.0, v22.15.0

Marking the API stable.

v18.0.0

Added in: v18.0.0

A browser-compatible implementation ofWritableStreamDefaultController.

Class:WritableStreamDefaultWriter#

History
VersionChanges
v23.11.0, v22.15.0

Marking the API stable.

v18.0.0

Added in: v18.0.0

A browser-compatible implementation ofWritableStreamDefaultWriter.