Global objects#
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
| Version | Changes |
|---|---|
| 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 trueabortController.abort([reason])#
History
| Version | Changes |
|---|---|
| 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'sreasonproperty.
Triggers the abort signal, causing theabortController.signal to emitthe'abort' event.
Class:AbortSignal#
- Extends:<EventTarget>
TheAbortSignal is used to notify observers when theabortController.abort() method is called.
Static method:AbortSignal.abort([reason])#
History
| Version | Changes |
|---|---|
| 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 |
reason<any>- Returns:<AbortSignal>
Returns a new already abortedAbortSignal.
Static method:AbortSignal.timeout(delay)#
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)#
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'#
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#
- Type:<boolean> True after the
AbortControllerhas been aborted.
abortSignal.onabort#
- Type:<Function>
An optional callback function that may be set by user code to be notifiedwhen theabortController.abort() function has been called.
abortSignal.reason#
- Type:<any>
An optional reason specified when theAbortSignal was triggered.
const ac =newAbortController();ac.abort(newError('boom!'));console.log(ac.signal.reason);// Error: boom!abortSignal.throwIfAborted()#
IfabortSignal.aborted istrue, throwsabortSignal.reason.
Class:Blob#
See<Blob>.
Class:Buffer#
- Type:<Function>
Used to handle binary data. See thebuffer section.
Class:ByteLengthQueuingStrategy#
History
| Version | Changes |
|---|---|
| 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)#
Buffer.from(data, 'base64') instead.Global alias forbuffer.atob().
An automated migration is available (source):
npx codemod@latest @nodejs/buffer-atob-btoaClass:BroadcastChannel#
btoa(data)#
buf.toString('base64') instead.Global alias forbuffer.btoa().
clearImmediate(immediateObject)#
clearImmediate is described in thetimers section.
clearInterval(intervalObject)#
clearInterval is described in thetimers section.
clearTimeout(timeoutObject)#
clearTimeout is described in thetimers section.
Class:CloseEvent#
A browser-compatible implementation of<CloseEvent>. Disable this APIwith the--no-experimental-websocket CLI flag.
Class:CompressionStream#
History
| Version | Changes |
|---|---|
| v24.7.0, v22.20.0 | format now accepts |
| v23.11.0, v22.15.0 | Marking the API stable. |
| v18.0.0 | Added in: v18.0.0 |
A browser-compatible implementation ofCompressionStream.
console#
- Type:<Object>
Used to print to stdout and stderr. See theconsole section.
Class:CountQueuingStrategy#
History
| Version | Changes |
|---|---|
| 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
| Version | Changes |
|---|---|
| v23.0.0 | No longer experimental. |
| v19.0.0 | No longer behind |
| 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
| Version | Changes |
|---|---|
| v23.0.0 | No longer experimental. |
| v19.0.0 | No longer behind |
| 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
| Version | Changes |
|---|---|
| v23.0.0 | No longer experimental. |
| v19.0.0 | No longer behind |
| 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
| Version | Changes |
|---|---|
| v23.0.0 | No longer experimental. |
| v22.1.0, v20.13.0 | CustomEvent is now stable. |
| v19.0.0 | No longer behind |
| v18.7.0, v16.17.0 | Added in: v18.7.0, v16.17.0 |
A browser-compatible implementation of<CustomEvent>.
Class:DecompressionStream#
History
| Version | Changes |
|---|---|
| v24.7.0, v22.20.0 | format now accepts |
| v23.11.0, v22.15.0 | Marking the API stable. |
| v18.0.0 | Added in: v18.0.0 |
A browser-compatible implementation ofDecompressionStream.
ErrorEvent#
A browser-compatible implementation of<ErrorEvent>.
Class:Event#
History
| Version | Changes |
|---|---|
| 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#
--experimental-eventsourceCLI flag.A browser-compatible implementation of<EventSource>.
Class:EventTarget#
History
| Version | Changes |
|---|---|
| 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
| Version | Changes |
|---|---|
| v21.0.0 | No longer experimental. |
| v18.0.0 | No longer behind |
| 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());Class:File#
See<File>.
Class:FormData#
History
| Version | Changes |
|---|---|
| v21.0.0 | No longer experimental. |
| v18.0.0 | No longer behind |
| v17.6.0, v16.15.0 | Added in: v17.6.0, v16.15.0 |
A browser-compatible implementation of<FormData>.
global#
globalThis 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
| Version | Changes |
|---|---|
| v21.0.0 | No longer experimental. |
| v18.0.0 | No longer behind |
| v17.5.0, v16.15.0 | Added in: v17.5.0, v16.15.0 |
A browser-compatible implementation of<Headers>.
localStorage#
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#
TheMessageChannel class. SeeMessageChannel for more details.
Class:MessageEvent#
A browser-compatible implementation of<MessageEvent>.
Class:MessagePort#
TheMessagePort class. SeeMessagePort for more details.
module#
This variable may appear to be global but is not. Seemodule.
Class:Navigator#
--no-experimental-global-navigator CLI flag.A partial implementation of theNavigator API.
navigator#
--no-experimental-global-navigator CLI flag.A partial implementation ofwindow.navigator.
navigator.hardwareConcurrency#
- Type:<number>
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#
- Type:<string>
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#
- 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#
- Type:<string>
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#
- Type:<string>
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#
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#
ThePerformanceEntry class. SeePerformanceEntry for more details.
Class:PerformanceMark#
ThePerformanceMark class. SeePerformanceMark for more details.
Class:PerformanceMeasure#
ThePerformanceMeasure class. SeePerformanceMeasure for more details.
Class:PerformanceObserver#
ThePerformanceObserver class. SeePerformanceObserver for more details.
Class:PerformanceObserverEntryList#
ThePerformanceObserverEntryList class. SeePerformanceObserverEntryList for more details.
Class:PerformanceResourceTiming#
ThePerformanceResourceTiming class. SeePerformanceResourceTiming formore details.
performance#
Theperf_hooks.performance object.
process#
- Type:<Object>
The process object. See theprocess object section.
queueMicrotask(callback)#
callback<Function> Function to be queued.
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
| Version | Changes |
|---|---|
| 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
| Version | Changes |
|---|---|
| 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
| Version | Changes |
|---|---|
| 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
| Version | Changes |
|---|---|
| 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
| Version | Changes |
|---|---|
| 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
| Version | Changes |
|---|---|
| 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
| Version | Changes |
|---|---|
| v21.0.0 | No longer experimental. |
| v18.0.0 | No longer behind |
| v17.5.0, v16.15.0 | Added in: v17.5.0, v16.15.0 |
A browser-compatible implementation of<Response>.
Class:Request#
History
| Version | Changes |
|---|---|
| v21.0.0 | No longer experimental. |
| v18.0.0 | No longer behind |
| v17.5.0, v16.15.0 | Added in: v17.5.0, v16.15.0 |
A browser-compatible implementation of<Request>.
sessionStorage#
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])#
setImmediate is described in thetimers section.
setInterval(callback, delay[, ...args])#
setInterval is described in thetimers section.
setTimeout(callback, delay[, ...args])#
setTimeout is described in thetimers section.
Class:Storage#
A browser-compatible implementation of<Storage>. Disable this API with the--no-webstorage (or its alias--no-experimental-webstorage) CLI flag.
structuredClone(value[, options])#
The WHATWGstructuredClone method.
Class:SubtleCrypto#
History
| Version | Changes |
|---|---|
| v19.0.0 | No longer behind |
| 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#
The WHATWG<DOMException> class.
Class:TextDecoder#
The WHATWGTextDecoder class. See theTextDecoder section.
Class:TextDecoderStream#
History
| Version | Changes |
|---|---|
| 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#
The WHATWGTextEncoder class. See theTextEncoder section.
Class:TextEncoderStream#
History
| Version | Changes |
|---|---|
| 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
| Version | Changes |
|---|---|
| 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
| Version | Changes |
|---|---|
| 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#
The WHATWGURL class. See theURL section.
Class:URLPattern#
The WHATWGURLPattern class. See theURLPattern section.
Class:URLSearchParams#
The WHATWGURLSearchParams class. See theURLSearchParams section.
Class:WebAssembly#
- Type:<Object>
The object that acts as the namespace for all W3CWebAssembly related functionality. See theMozilla Developer Network for usage and compatibility.
Class:WebSocket#
History
| Version | Changes |
|---|---|
| v22.4.0 | No longer experimental. |
| v22.0.0 | No longer behind |
| 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
| Version | Changes |
|---|---|
| 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
| Version | Changes |
|---|---|
| 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
| Version | Changes |
|---|---|
| v23.11.0, v22.15.0 | Marking the API stable. |
| v18.0.0 | Added in: v18.0.0 |
A browser-compatible implementation ofWritableStreamDefaultWriter.