全局对象#

稳定性:2 - 稳定

这些对象在所有模块中都可用。

以下变量可能看起来是全局的,但实际上不是。它们只存在于CommonJS 模块的作用域中

这里列出的对象是 Node.js 特有的。还有一些内置对象是 JavaScript 语言本身的一部分,它们也是全局可访问的。

类:AbortController#

一个实用工具类,用于在选定的基于Promise的 API 中发出取消信号。该 API 基于 Web API <AbortController>

const ac = new AbortController();

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

ac.abort();

console.log(ac.signal.aborted);  // Prints true 

abortController.abort([reason])#

  • reason <any> 一个可选的原因,可在 AbortSignalreason 属性上检索。

触发中止信号,使 abortController.signal 发出 'abort' 事件。

abortController.signal#

类:AbortSignal#

abortController.abort() 方法被调用时,AbortSignal 用于通知观察者。

静态方法:AbortSignal.abort([reason])#

返回一个新的、已经中止的 AbortSignal

静态方法:AbortSignal.timeout(delay)#
  • delay <number> 触发 AbortSignal 前等待的毫秒数。

返回一个新的 AbortSignal,它将在 delay 毫秒后被中止。

静态方法:AbortSignal.any(signals)#
  • signals <AbortSignal[]> 用来组合成新 AbortSignalAbortSignal 数组。

返回一个新的 AbortSignal,如果提供的任何一个信号被中止,它也将被中止。它的 abortSignal.reason 将被设置为导致它中止的那个 signals 的原因。

事件:'abort'#

abortController.abort() 方法被调用时,会发出 'abort' 事件。回调函数被调用时会传入一个对象参数,该对象只有一个 type 属性,其值设置为 'abort'

const ac = new AbortController();

// 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(); 

AbortSignal 关联的 AbortController 只会触发一次 'abort' 事件。我们建议代码在添加 'abort' 事件监听器之前,先检查 abortSignal.aborted 属性是否为 false

任何附加到 AbortSignal 的事件监听器都应使用 { once: true } 选项(或者,如果使用 EventEmitter API 来附加监听器,则使用 once() 方法),以确保事件监听器在 'abort' 事件被处理后立即被移除。否则可能导致内存泄漏。

abortSignal.aborted#
  • 类型:<boolean>AbortController 被中止后为 True。
abortSignal.onabort#

一个可选的回调函数,可由用户代码设置,用于在 abortController.abort() 函数被调用时收到通知。

abortSignal.reason#

AbortSignal 被触发时指定的可选原因。

const ac = new AbortController();
ac.abort(new Error('boom!'));
console.log(ac.signal.reason);  // Error: boom! 
abortSignal.throwIfAborted()#

如果 abortSignal.abortedtrue,则抛出 abortSignal.reason

类:Blob#

参见 <Blob>

类:Buffer#

用于处理二进制数据。参见 buffer 章节

类:ByteLengthQueuingStrategy#

一个与浏览器兼容的 ByteLengthQueuingStrategy 实现。

__dirname#

此变量可能看起来是全局的,但实际上不是。参见 __dirname

__filename#

此变量可能看起来是全局的,但实际上不是。参见 __filename

atob(data)#

稳定性:3 - 遗留。请改用 Buffer.from(data, 'base64')

buffer.atob() 的全局别名。

类:BroadcastChannel#

参见 <BroadcastChannel>

btoa(data)#

稳定性:3 - 遗留。请改用 buf.toString('base64')

buffer.btoa() 的全局别名。

clearImmediate(immediateObject)#

clearImmediate定时器 章节中描述。

clearInterval(intervalObject)#

clearInterval定时器 章节中描述。

clearTimeout(timeoutObject)#

clearTimeout定时器 章节中描述。

类:CloseEvent#

一个与浏览器兼容的 <CloseEvent> 实现。使用 --no-experimental-websocket CLI 标志禁用此 API。

类:CompressionStream#

一个与浏览器兼容的 CompressionStream 实现。

console#

用于打印到标准输出(stdout)和标准错误(stderr)。参见 console 章节。

类:CountQueuingStrategy#

一个与浏览器兼容的 CountQueuingStrategy 实现。

类:Crypto#

一个与浏览器兼容的 <Crypto> 实现。只有当 Node.js 二进制文件编译时包含了对 node:crypto 模块的支持,此全局变量才可用。

crypto#

一个与浏览器兼容的 Web Crypto API 实现。

类:CryptoKey#

一个与浏览器兼容的 <CryptoKey> 实现。只有当 Node.js 二进制文件编译时包含了对 node:crypto 模块的支持,此全局变量才可用。

类:CustomEvent#

一个与浏览器兼容的 <CustomEvent> 实现。

类:DecompressionStream#

一个与浏览器兼容的 DecompressionStream 实现。

ErrorEvent#

一个与浏览器兼容的 <ErrorEvent> 实现。

类:Event#

一个与浏览器兼容的 Event 类实现。更多详情请参见 EventTargetEvent API

类:EventSource#

稳定性:1 - 实验性。使用 --experimental-eventsource CLI 标志启用此 API。

一个与浏览器兼容的 <EventSource> 实现。

类:EventTarget#

一个与浏览器兼容的 EventTarget 类实现。更多详情请参见 EventTargetEvent API

exports#

此变量可能看起来是全局的,但实际上不是。参见 exports

fetch#

一个与浏览器兼容的 fetch() 函数实现。

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

该实现基于 undici,这是一个为 Node.js 从头编写的 HTTP/1.1 客户端。您可以通过读取 process.versions.undici 属性来确定您的 Node.js 进程中捆绑的 undici 版本。

自定义调度器#

您可以通过在 fetch 的选项对象中传递一个自定义调度器来分派请求。该调度器必须与 undiciDispatcher 兼容。

fetch(url, { dispatcher: new MyAgent() }); 

可以通过安装 undici 并使用 setGlobalDispatcher() 方法来更改 Node.js 中的全局调度器。调用此方法将同时影响 undici 和 Node.js。

import { setGlobalDispatcher } from 'undici';
setGlobalDispatcher(new MyAgent()); 

相关类#

以下全局变量可与 fetch 一起使用

类:File#

参见 <File>

类:FormData#

一个与浏览器兼容的 <FormData> 实现。

global#

稳定性:3 - 遗留。请改用 globalThis

  • 类型:<Object> 全局命名空间对象。

在浏览器中,顶层作用域传统上就是全局作用域。这意味着 var something 会定义一个新的全局变量,除非在 ECMAScript 模块中。在 Node.js 中,情况有所不同。顶层作用域不是全局作用域;在 Node.js 模块中,var something 将是该模块的局部变量,无论它是 CommonJS 模块 还是 ECMAScript 模块

类:Headers#

一个与浏览器兼容的 <Headers> 实现。

localStorage#

一个与浏览器兼容的 localStorage 实现。数据以未加密的形式存储在由 --localstorage-file CLI 标志指定的文件中。可存储的最大数据量为 10 MB。不支持在 Web Storage API 之外对此数据进行任何修改。使用 --no-webstorage(或其别名 --no-experimental-webstorage)CLI 标志禁用此 API。在服务器上下文中使用时,localStorage 数据不是按用户或请求存储的,它在所有用户和请求之间共享。

类:MessageChannel#

MessageChannel 类。更多详情请参见 MessageChannel

类:MessageEvent#

一个与浏览器兼容的 <MessageEvent> 实现。

类:MessagePort#

MessagePort 类。更多详情请参见 MessagePort

module#

此变量可能看起来是全局的,但实际上不是。参见 module

类:Navigator#

稳定性:1.1 - 积极开发中。使用 --no-experimental-global-navigator CLI 标志禁用此 API。

Navigator API 的部分实现。

navigator#

稳定性:1.1 - 积极开发中。使用 --no-experimental-global-navigator CLI 标志禁用此 API。

window.navigator 的部分实现。

navigator.hardwareConcurrency#

navigator.hardwareConcurrency 只读属性返回当前 Node.js 实例可用的逻辑处理器数量。

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

navigator.language#

navigator.language 只读属性返回一个字符串,表示 Node.js 实例的首选语言。该语言将由 Node.js 在运行时使用的 ICU 库根据操作系统的默认语言来确定。

该值表示 RFC 5646 中定义的语言版本。

在没有 ICU 的构建版本中,回退值为 'en-US'

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

navigator.languages#

  • 类型:{Array}

navigator.languages 只读属性返回一个字符串数组,表示 Node.js 实例的首选语言。默认情况下,navigator.languages 仅包含 navigator.language 的值,该值将由 Node.js 在运行时使用的 ICU 库根据操作系统的默认语言来确定。

在没有 ICU 的构建版本中,回退值为 ['en-US']

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

navigator.platform#

navigator.platform 只读属性返回一个字符串,标识 Node.js 实例运行的平台。

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

navigator.userAgent#

navigator.userAgent 只读属性返回用户代理字符串,由运行时名称和主版本号组成。

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

navigator.locks#

稳定性:1 - 实验性

navigator.locks 只读属性返回一个 LockManager 实例,可用于协调对同一进程内多个线程可能共享的资源的访问。此全局实现与浏览器 LockManager API 的语义相匹配。

// Request an exclusive lock
await 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 lock
await navigator.locks.request('shared_resource', { mode: 'shared' }, async (lock) => {
  // Multiple shared locks can be held simultaneously
  console.log(`Shared lock acquired: ${lock.name}`);
});// Request an exclusive lock
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
}).then(() => {
  console.log('Lock released');
});

// Request a shared lock
navigator.locks.request('shared_resource', { mode: 'shared' }, async (lock) => {
  // Multiple shared locks can be held simultaneously
  console.log(`Shared lock acquired: ${lock.name}`);
}).then(() => {
  console.log('Shared lock released');
});

详细的 API 文档请参见 worker_threads.locks

类:PerformanceEntry#

PerformanceEntry 类。更多详情请参见 PerformanceEntry

类:PerformanceMark#

PerformanceMark 类。更多详情请参见 PerformanceMark

类:PerformanceMeasure#

PerformanceMeasure 类。更多详情请参见 PerformanceMeasure

类:PerformanceObserver#

PerformanceObserver 类。更多详情请参见 PerformanceObserver

类:PerformanceObserverEntryList#

PerformanceObserverEntryList 类。更多详情请参见 PerformanceObserverEntryList

类:PerformanceResourceTiming#

PerformanceResourceTiming 类。更多详情请参见 PerformanceResourceTiming

performance#

perf_hooks.performance 对象。

process#

process 对象。参见 process 对象 章节。

queueMicrotask(callback)#

queueMicrotask() 方法将一个微任务排队以调用 callback。如果 callback 抛出异常,process 对象'uncaughtException' 事件将被触发。

微任务队列由 V8 管理,其使用方式与由 Node.js 管理的 process.nextTick() 队列类似。在 Node.js 事件循环的每一轮中,process.nextTick() 队列总是在微任务队列之前处理。

// 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 = async function load(key) {
  const hit = this._cache.get(key);
  if (hit !== undefined) {
    queueMicrotask(() => {
      this.emit('load', hit);
    });
    return;
  }

  const data = await fetchData(key);
  this._cache.set(key, data);
  this.emit('load', data);
}; 

类:ReadableByteStreamController#

一个与浏览器兼容的 ReadableByteStreamController 实现。

类:ReadableStream#

一个与浏览器兼容的 ReadableStream 实现。

类:ReadableStreamBYOBReader#

一个与浏览器兼容的 ReadableStreamBYOBReader 实现。

类:ReadableStreamBYOBRequest#

一个与浏览器兼容的 ReadableStreamBYOBRequest 实现。

类:ReadableStreamDefaultController#

一个与浏览器兼容的 ReadableStreamDefaultController 实现。

类:ReadableStreamDefaultReader#

一个与浏览器兼容的 ReadableStreamDefaultReader 实现。

require()#

此变量可能看起来是全局的,但实际上不是。参见 require()

类:Response#

一个与浏览器兼容的 <Response> 实现。

类:Request#

一个与浏览器兼容的 <Request> 实现。

sessionStorage#

稳定性:1.0 - 早期开发。

一个与浏览器兼容的 sessionStorage 实现。数据存储在内存中,存储配额为 10 MB。sessionStorage 数据仅在当前运行的进程中持久存在,并且不在工作线程之间共享。

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

setImmediate定时器 章节中描述。

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

setInterval定时器 章节中描述。

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

setTimeout定时器 章节中描述。

类:Storage#

稳定性:1.0 - 早期开发。使用 [--experimental-webstorage][] CLI 标志启用此 API。

一个与浏览器兼容的 <Storage> 实现。使用 --no-webstorage(或其别名 --no-experimental-webstorage)CLI 标志禁用此 API。

structuredClone(value[, options])#

WHATWG 的 structuredClone 方法。

类:SubtleCrypto#

一个与浏览器兼容的 <SubtleCrypto> 实现。只有当 Node.js 二进制文件编译时包含了对 node:crypto 模块的支持,此全局变量才可用。

类:DOMException#

WHATWG 的 <DOMException> 类。

类:TextDecoder#

WHATWG 的 TextDecoder 类。参见 TextDecoder 章节。

类:TextDecoderStream#

一个与浏览器兼容的 TextDecoderStream 实现。

类:TextEncoder#

WHATWG 的 TextEncoder 类。参见 TextEncoder 章节。

类:TextEncoderStream#

一个与浏览器兼容的 TextEncoderStream 实现。

类:TransformStream#

一个与浏览器兼容的 TransformStream 实现。

类:TransformStreamDefaultController#

一个与浏览器兼容的 TransformStreamDefaultController 实现。

类:URL#

WHATWG 的 URL 类。参见 URL 章节。

类:URLPattern#

稳定性:1 - 实验性

WHATWG 的 URLPattern 类。参见 URLPattern 章节。

类:URLSearchParams#

WHATWG 的 URLSearchParams 类。参见 URLSearchParams 章节。

类:WebAssembly#

作为所有 W3C WebAssembly 相关功能命名空间的对象。用法和兼容性请参见 Mozilla 开发者网络

类:WebSocket#

一个与浏览器兼容的 <WebSocket> 实现。使用 --no-experimental-websocket CLI 标志禁用此 API。

类:WritableStream#

一个与浏览器兼容的 WritableStream 实现。

类:WritableStreamDefaultController#

一个与浏览器兼容的 WritableStreamDefaultController 实现。

类:WritableStreamDefaultWriter#

一个与浏览器兼容的 WritableStreamDefaultWriter 实现。