Модули: module API
Объект Module
Предоставляет общие служебные методы при взаимодействии с экземплярами Module, переменной module, часто встречающейся в модулях CommonJS. Доступен через import 'module' или require('module').
module.builtinModules
Список имён всех модулей, предоставляемых Node.js. Может использоваться для проверки, поддерживается ли модуль третьей стороной.
Объект module в данном контексте не является тем же объектом, что и объект, предоставляемый обёрткой модуля. Для доступа к нему требуется импортировать модуль Module:
// module.mjs
// In an ECMAScript module
import { builtinModules as builtin } from 'module'; // module.cjs
// In a CommonJS module
const builtin = require('module').builtinModules; module.createRequire(filename)
-
filename<строка> | <URL> Имя файла, используемого для построения функции require. Должен быть объектом URL файла, строкой URL файла или строкой абсолютного пути. - Возвращает: <require> Функция require
import { createRequire } from 'module';
const require = createRequire(import.meta.url);
// sibling-module.js is a CommonJS module.
const siblingModule = require('./sibling-module'); module.createRequireFromPath(filename)
createRequire() вместо этого.-
filename<строка> Имя файла, используемого для построения относительной функции require. - Возвращает: <require> Функция require
const { createRequireFromPath } = require('module');
const requireUtil = createRequireFromPath('../src/utils/');
// Require `../src/utils/some-tool`
requireUtil('./some-tool'); module.syncBuiltinESMExports()
Метод module.syncBuiltinESMExports() обновляет все активные связи для встроенных модулей ES Модулей для соответствия свойствам экспорта CommonJS. Он не добавляет и не удаляет экспортируемые имена из ES Модулей.
const fs = require('fs');
const { syncBuiltinESMExports } = require('module');
fs.readFile = null;
delete fs.readFileSync;
fs.newAPI = function newAPI() {
// ...
};
syncBuiltinESMExports();
import('fs').then((esmFS) => {
assert.strictEqual(esmFS.readFile, null);
assert.strictEqual('readFileSync' in fs, true);
assert.strictEqual(esmFS.newAPI, undefined);
}); Поддержка карты исходного кода v3
Справочные материалы для взаимодействия с кэшем карт исходного кода. Этот кэш заполняется при включении анализа карт исходного кода и поиске директив включения карт исходного кода в футере модулей.
Чтобы включить анализ карт исходного кода, Node.js необходимо запустить с флагом --enable-source-maps или с включением анализа покрытия кода путём установки NODE_V8_COVERAGE=dir.
// module.mjs
// In an ECMAScript module
import { findSourceMap, SourceMap } from 'module'; // module.cjs
// In a CommonJS module
const { findSourceMap, SourceMap } = require('module'); module.findSourceMap(path[, error])
-
path<строка> -
error<Ошибка> - Возвращает: <module.SourceMap>
path — это разрешённый путь к файлу, для которого должна быть получена соответствующая карта исходного кода.
Экземпляр error должен быть передан в качестве второго параметра в findSourceMap в исключительных случаях, например, при вызове переопределённого Error.prepareStackTrace(error, trace). Модули не добавляются в кэш модулей, пока не будут успешно загружены. В этих случаях карты исходного кода связываются с экземпляром error вместе с path.
Класс: module.SourceMap
new SourceMap(payload)
-
payload<Объект>
Создаёт новый экземпляр sourceMap.
payload — это объект с ключами, соответствующими формату карты исходного кода v3:
-
file: <строка> -
version: <число> -
sources: <массив строк> -
sourcesContent: <массив строк> -
names: <массив строк> -
mappings: <строка> -
sourceRoot: <строка>
sourceMap.payload
- Возвращает: <Объект>
Получение данных, используемых для построения экземпляра SourceMap.
sourceMap.findEntry(lineNumber, columnNumber)
Принимая номер строки и номер столбца в сгенерированном файле, возвращает объект, представляющий позицию в исходном файле. Возвращаемый объект состоит из следующих ключей:
- generatedLine: <число>
- generatedColumn: <число>
- originalSource: <строка>
- originalLine: <число>
- originalColumn: <число>
© Joyent, Inc. and other Node contributors
Licensed under the MIT License.
Node.js is a trademark of Joyent, Inc. and is used with its permission.
We are not endorsed by or affiliated with Joyent.
https://nodejs.org/dist/latest-v12.x/docs/api/module.html