Перейти к содержанию

🚀 Где задеплоить проект?

Партнёрская ссылка. Дата-центры в РФ, оплата картой.

Глобальные объекты

Стабильность: 2 – Стабильная

АПИ является удовлетворительным. Совместимость с NPM имеет высший приоритет и не будет нарушена кроме случаев явной необходимости.

Эти объекты доступны во всех модулях.

Следующие переменные могут казаться глобальными, но таковыми не являются. Они существуют только в области видимости модулей CommonJS:

Перечисленные ниже объекты относятся к Node.js. Есть и встроенные объекты, входящие в сам язык JavaScript; они тоже доступны глобально.

__dirname

Эта переменная может казаться глобальной, но таковой не является. См. __dirname.

__filename

Эта переменная может казаться глобальной, но таковой не является. См. __filename.

Класс: AbortController

Вспомогательный класс для сигнализации об отмене в выбранных API на основе Promise. API основан на веб-API AbortController.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
const ac = new AbortController();

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

ac.abort();

console.log(ac.signal.aborted); // Выводит true

abortController.abort([reason])

  • reason <any> Необязательная причина; доступна в свойстве reason у AbortSignal.

Инициирует сигнал отмены: у abortController.signal генерируется событие 'abort'.

abortController.signal

Класс: AbortSignal

AbortSignal уведомляет подписчиков о вызове метода abortController.abort().

Статический метод: AbortSignal.abort([reason])

Возвращает новый уже прерванный AbortSignal.

Статический метод: AbortSignal.timeout(delay)

  • delay <number> Задержка в миллисекундах до срабатывания AbortSignal.

Возвращает новый AbortSignal, который будет прерван через delay миллисекунд.

Статический метод: AbortSignal.any(signals)

  • signals <AbortSignal[]> AbortSignal, из которых составляется новый AbortSignal.

Возвращает новый AbortSignal, который будет прерван, если прерван любой из переданных сигналов. Свойство abortSignal.reason получит значение той причины, которая привела к прерыванию.

Событие: 'abort'

Событие 'abort' генерируется при вызове abortController.abort(). Колбэк получает один объект-аргумент с единственным свойством type, равным 'abort':

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
const ac = new AbortController();

// Через свойство onabort...
ac.signal.onabort = () => console.log('aborted!');

// Или через API EventTarget...
ac.signal.addEventListener(
    'abort',
    (event) => {
        console.log(event.type); // Выводит 'abort'
    },
    { once: true }
);

ac.abort();

AbortController, связанный с AbortSignal, может сгенерировать 'abort' только один раз. Рекомендуется проверять, что abortSignal.aborted равно false, перед добавлением слушателя 'abort'.

Слушатели на AbortSignal следует вешать с опцией { once: true } (или через once() у EventEmitter), чтобы слушатель удалился сразу после обработки 'abort'. Иначе возможны утечки памяти.

abortSignal.aborted

true после того, как AbortController был прерван.

abortSignal.onabort

Необязательный колбэк, который пользовательский код может задать для уведомления о вызове abortController.abort().

abortSignal.reason

Необязательная причина, указанная при срабатывании AbortSignal.

1
2
3
const ac = new AbortController();
ac.abort(new Error('boom!'));
console.log(ac.signal.reason); // Error: boom!

abortSignal.throwIfAborted()

Если abortSignal.aborted равно true, выбрасывает abortSignal.reason.

atob(data)

Стабильность: 3 – Закрыто

Используйте вместо этого Buffer.from(data, 'base64').

Глобальный псевдоним для buffer.atob().

Доступна автоматическая миграция (исходники):

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

Класс: Blob

См. Blob.

Класс: BroadcastChannel

См. BroadcastChannel.

btoa(data)

Стабильность: 3 – Закрыто

Используйте вместо этого buf.toString('base64').

Глобальный псевдоним для buffer.btoa().

Доступна автоматическая миграция (исходники):

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

Класс: Buffer

Для работы с двоичными данными. См. раздел buffer.

Класс: ByteLengthQueuingStrategy

Реализация ByteLengthQueuingStrategy, совместимая с браузером.

clearImmediate(immediateObject)

clearImmediate описан в разделе таймеры.

clearInterval(intervalObject)

clearInterval описан в разделе таймеры.

clearTimeout(timeoutObject)

clearTimeout описан в разделе таймеры.

Класс: CloseEvent

Реализация CloseEvent, совместимая с браузером. Отключите это API флагом CLI --no-experimental-websocket.

Класс: 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, совместимая с браузером.

Класс: DOMException

Класс WHATWG DOMException.

ErrorEvent

Реализация ErrorEvent, совместимая с браузером.

Класс: Event

Реализация класса Event, совместимая с браузером. Подробнее — API EventTarget и Event.

Класс: EventSource

Стабильность: 1 – Экспериментальная

Включите это API флагом CLI --experimental-eventsource.

Реализация EventSource, совместимая с браузером.

Класс: EventTarget

Реализация класса EventTarget, совместимая с браузером. Подробнее — API EventTarget и Event.

exports

Эта переменная может казаться глобальной, но таковой не является. См. exports.

fetch

Реализация функции fetch(), совместимая с браузером.

1
2
3
4
5
const res = await fetch('https://nodejs.org/api/documentation.json');
if (res.ok) {
  const data = await res.json();
  console.log(data);
}

Реализация основана на undici — HTTP/1.1-клиенте для Node.js. Версию встроенного undici можно узнать по свойству process.versions.undici.

Пользовательский dispatcher

Можно передать свой dispatcher в опциях fetch. Он должен быть совместим с Dispatcher из undici.

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

Глобальный dispatcher в Node.js можно сменить, установив undici и вызвав setGlobalDispatcher(). Это затронет и undici, и Node.js.

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

Связанные классы

С fetch можно использовать глобалы:

Класс: File

См. File.

Класс: FormData

Реализация FormData, совместимая с браузером.

global

Стабильность: 3 – Закрыто

Используйте вместо этого globalThis.

  • Тип: <Object> Объект глобального пространства имён.

В браузерах традиционно верхний уровень — глобальная область: var something создаёт глобальную переменную (кроме модулей ECMAScript). В Node.js иначе: верхний уровень модуля не совпадает с глобальной областью; var something в модуле Node.js локально для этого модуля — и для CommonJS, и для ECMAScript.

Класс: Headers

Реализация Headers, совместимая с браузером.

localStorage

Кандидат в релиз

Отключите это API флагом --no-experimental-webstorage.

Реализация localStorage, совместимая с браузером. Данные хранятся без шифрования в файле, заданном флагом CLI --localstorage-file. Максимальный объём — 10 МБ. Изменение данных вне Web Storage API не поддерживается. На сервере localStorage не разделён по пользователям или запросам: данные общие для всех.

Класс: MessageChannel

Класс MessageChannel. Подробнее — MessageChannel.

Класс: MessageEvent

Реализация MessageEvent, совместимая с браузером.

Класс: MessagePort

Класс MessagePort. Подробнее — MessagePort.

module

Эта переменная может казаться глобальной, но таковой не является. См. module.

Стабильность: 1 – Экспериментальная

Отключите это API флагом --no-experimental-global-navigator.

Частичная реализация Navigator API.

Стабильность: 1 – Экспериментальная

Отключите это API флагом --no-experimental-global-navigator.

Частичная реализация window.navigator.

Свойство navigator.hardwareConcurrency только для чтения: число логических процессоров, доступных текущему экземпляру Node.js.

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

Свойство navigator.language только для чтения: предпочитаемый язык экземпляра Node.js. Определяется библиотекой ICU по умолчанию языка ОС.

Формат — как в RFC 5646.

Без ICU значение по умолчанию — 'en-US'.

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

Свойство navigator.languages только для чтения: массив предпочитаемых языков. По умолчанию содержит только navigator.language (см. выше).

Без ICU — ['en-US'].

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

Стабильность: 1 – Экспериментальная

Свойство navigator.locks только для чтения: экземпляр LockManager для координации доступа к ресурсам между потоками одного процесса. Семантика соответствует браузерному API LockManager.

1
2
3
4
5
6
7
8
9
// Эксклюзивная блокировка
await navigator.locks.request('my_resource', async (lock) => {
  console.log(`Lock acquired: ${lock.name}`);
});

// Разделяемая блокировка
await navigator.locks.request('shared_resource', { mode: 'shared' }, async (lock) => {
  console.log(`Shared lock acquired: ${lock.name}`);
});
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
navigator.locks.request('my_resource', async (lock) => {
  console.log(`Lock acquired: ${lock.name}`);
}).then(() => {
  console.log('Lock released');
});

navigator.locks.request('shared_resource', { mode: 'shared' }, async (lock) => {
  console.log(`Shared lock acquired: ${lock.name}`);
}).then(() => {
  console.log('Shared lock released');
});

Подробная документация — worker_threads.locks.

Свойство navigator.platform только для чтения: строка с идентификатором платформы.

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

Свойство navigator.userAgent только для чтения: user agent — имя среды и мажорная версия.

1
console.log(`The user-agent is ${navigator.userAgent}`); // Выводит "Node.js/21"

performance

Объект perf_hooks.performance.

Класс: PerformanceEntry

Класс PerformanceEntry. См. PerformanceEntry.

Класс: PerformanceMark

Класс PerformanceMark. См. PerformanceMark.

Класс: PerformanceMeasure

Класс PerformanceMeasure. См. PerformanceMeasure.

Класс: PerformanceObserver

Класс PerformanceObserver. См. PerformanceObserver.

Класс: PerformanceObserverEntryList

Класс PerformanceObserverEntryList. См. PerformanceObserverEntryList.

Класс: PerformanceResourceTiming

Класс PerformanceResourceTiming. См. PerformanceResourceTiming.

process

Объект process. См. раздел объект process.

queueMicrotask(callback)

  • callback <Function> Функция для постановки в очередь.

queueMicrotask() ставит микрозадачу на вызов callback. Если callback выбрасывает исключение, генерируется событие process object 'uncaughtException'.

Очередь микрозадач управляется V8; её можно сравнить с очередью process.nextTick(), которую управляет Node.js. Очередь process.nextTick() всегда обрабатывается раньше очереди микрозадач в каждом цикле событий.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
// `queueMicrotask()` гарантирует, что событие 'load' всегда
// эмитится асинхронно и предсказуемо. С `process.nextTick()` событие 'load'
// всегда шло бы раньше других задач с промисами.

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);
};

Класс: QuotaExceededError

Класс WHATWG QuotaExceededError. Наследует DOMException.

Класс: ReadableByteStreamController

Реализация ReadableByteStreamController, совместимая с браузером.

Класс: ReadableStream

Реализация ReadableStream, совместимая с браузером.

Класс: ReadableStreamBYOBReader

Реализация ReadableStreamBYOBReader, совместимая с браузером.

Класс: ReadableStreamBYOBRequest

Реализация ReadableStreamBYOBRequest, совместимая с браузером.

Класс: ReadableStreamDefaultController

Реализация ReadableStreamDefaultController, совместимая с браузером.

Класс: ReadableStreamDefaultReader

Реализация ReadableStreamDefaultReader, совместимая с браузером.

Класс: Request

Реализация Request, совместимая с браузером.

require()

Эта переменная может казаться глобальной, но таковой не является. См. require().

Класс: Response

Реализация Response, совместимая с браузером.

sessionStorage

Кандидат в релиз

Отключите это API флагом --no-experimental-webstorage.

Реализация sessionStorage, совместимая с браузером. Данные в памяти, квота 10 МБ. sessionStorage живёт только в текущем процессе и не разделяется между worker.

setImmediate(callback[, ...args])

setImmediate описан в разделе таймеры.

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

setInterval описан в разделе таймеры.

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

setTimeout описан в разделе таймеры.

Класс: Storage

Кандидат в релиз

Отключите это API флагом --no-experimental-webstorage.

Реализация Storage, совместимая с браузером.

structuredClone(value[, options])

Метод WHATWG structuredClone.

Класс: SubtleCrypto

Реализация SubtleCrypto, совместимая с браузером. Глобал доступен только если бинарник Node.js собран с поддержкой модуля node:crypto.

Класс: 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. Использование и совместимость — на MDN.

Класс: WebSocket

Реализация WebSocket, совместимая с браузером. Отключите API флагом --no-experimental-websocket.

Класс: WritableStream

Реализация WritableStream, совместимая с браузером.

Класс: WritableStreamDefaultController

Реализация WritableStreamDefaultController, совместимая с браузером.

Класс: WritableStreamDefaultWriter

Реализация WritableStreamDefaultWriter, совместимая с браузером.

Комментарии