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

API node:module

v18.x.x

Объект Module

Предоставляет общие полезные методы при взаимодействии с экземплярами Module, переменной module, часто встречающейся в модулях CommonJS. Доступ к ней осуществляется через import 'node:module' или require('node:module').

module.builtinModules

Список имен всех модулей, предоставляемых Node.js. Может использоваться для проверки того, поддерживается ли модуль третьей стороной или нет.

модуль в данном контексте - это не тот же объект, который предоставляется оберткой модуля. Для доступа к нему требуется модуль Module:

1
2
3
// module.mjs
// В модуле ECMAScript
import { builtinModules as builtin } from 'node:module';
1
2
3
// module.cjs
// В модуле CommonJS
const builtin = require('node:module').builtinModules;

module.createRequire(filename)

  • filename <string> | <URL> Имя файла, которое будет использоваться для создания функции require. Должно быть объектом URL файла, строкой URL файла или строкой абсолютного пути.
  • Возвращает: {require} Функция require
1
2
3
4
5
import { createRequire } from 'node:module';
const require = createRequire(import.meta.url);

// sibling-module.js является модулем CommonJS.
const siblingModule = require('./sibling-module');

module.isBuiltin(moduleName)

  • moduleName <string> имя модуля
  • Возвращает: <boolean> возвращает true, если модуль является встроенным, иначе возвращает false
1
2
3
4
import { isBuiltin } from 'node:module';
isBuiltin('node:fs'); // true
isBuiltin('fs'); // true
isBuiltin('wss'); // false

module.syncBuiltinESMExports()

Метод module.syncBuiltinESMExports() обновляет все живые привязки для встроенных ES Modules, чтобы они соответствовали свойствам экспортируемых CommonJS. Он не добавляет и не удаляет экспортируемые имена из ES Modules.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
const fs = require('node:fs');
const assert = require('node:assert');
const { syncBuiltinESMExports } = require('node:module');

fs.readFile = newAPI;

delete fs.readFileSync;

function newAPI() {
    // ...
}

fs.newAPI = newAPI;

syncBuiltinESMExports();

import('node:fs').then((esmFS) => {
    // Он синхронизирует существующее свойство readFile с новым значением
    assert.strictEqual(esmFS.readFile, newAPI);
    // readFileSync был удален из требуемой fs
    assert.strictEqual('readFileSync' in fs, false);
    // syncBuiltinESMExports() не удаляет readFileSync из esmFS
    assert.strictEqual('readFileSync' in esmFS, true);
    // syncBuiltinESMExports() не добавляет имена
    assert.strictEqual(esmFS.newAPI, undefined);
});

Source map v3 support

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

Экспериментальная

Помощники для взаимодействия с кэшем карты источников. Этот кэш заполняется, когда включен разбор карты источников и директивы включения карты источников найдены в нижнем колонтитуле модулей.

Чтобы включить разбор карты исходников, Node.js должен быть запущен с флагом --enable-source-maps, или с включенным покрытием кода путем установки NODE_V8_COVERAGE=dir.

1
2
3
// module.mjs
// In an ECMAScript module
import { findSourceMap, SourceMap } from 'node:module';
1
2
3
// module.cjs
// In a CommonJS module
const { findSourceMap, SourceMap } = require('node:module');

module.findSourceMap(path)

  • path <string>
  • Возвращает: {module.SourceMap|undefined} Возвращает module.SourceMap, если карта источника найдена, undefined в противном случае.

path - это разрешенный путь к файлу, для которого должна быть найдена соответствующая карта источников.

Класс: module.SourceMap

new SourceMap(payload)

Создает новый экземпляр sourceMap.

payload - это объект с ключами, соответствующими Source map v3 format:

sourceMap.payload

Получатель полезной нагрузки, используемой для построения экземпляра SourceMap.

sourceMap.findEntry(lineNumber, columnNumber)

Учитывая номер строки и номер столбца в сгенерированном исходном файле, возвращает объект, представляющий позицию в исходном файле. Возвращаемый объект состоит из следующих ключей: