Модули: node:module API
Объект Module
Предоставляет общие вспомогательные методы при взаимодействии с экземплярами Module, переменной module, часто встречающейся в модулях CommonJS. Доступен через import 'node:module' или require('node:module').
module.builtinModules
Список имён всех модулей, предоставляемых Node.js. Может использоваться для проверки, поддерживается ли модуль третьей стороной.
module в данном контексте — не тот же объект, что и предоставляемый обёрткой модуля module wrapper. Для доступа к нему требуется импортировать модуль Module:
Модули MJS
// module.mjs
// In an ECMAScript module
import { builtinModules as builtin } from 'node:module';
Модули CJS
// module.cjs
// In a CommonJS module
const builtin = require('node:module').builtinModules;
module.createRequire(filename)
-
filename<строка> | <URL> Имя файла для построения функции require. Должно быть объектом URL файла, строкой URL файла или строкой абсолютного пути. - Возвращает: <require> Функция require
import { createRequire } from 'node:module';
const require = createRequire(import.meta.url);
// sibling-module.js is a CommonJS module.
const siblingModule = require('./sibling-module'); copy
module.isBuiltin(moduleName)
-
moduleName<строка> имя модуля - Возвращает: <булево> возвращает true, если модуль встроен, иначе возвращает false
import { isBuiltin } from 'node:module';
isBuiltin('node:fs'); // true
isBuiltin('fs'); // true
isBuiltin('wss'); // false copy
module.syncBuiltinESMExports()
Метод module.syncBuiltinESMExports() обновляет все активные привязки для встроенных ES-модулей, чтобы соответствовать свойствам экспорта CommonJS. Он не добавляет и не удаляет экспортируемые имена из ES-модулей.
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) => {
// It syncs the existing readFile property with the new value
assert.strictEqual(esmFS.readFile, newAPI);
// readFileSync has been deleted from the required fs
assert.strictEqual('readFileSync' in fs, false);
// syncBuiltinESMExports() does not remove readFileSync from esmFS
assert.strictEqual('readFileSync' in esmFS, true);
// syncBuiltinESMExports() does not add names
assert.strictEqual(esmFS.newAPI, undefined);
}); copy Поддержка Source Map v3
Вспомогательные функции для взаимодействия с кэшем source map. Этот кэш заполняется, когда включена обработка source map и в подвале модуля найдены директивы включения source map.
Для включения обработки source map Node.js необходимо запустить со флагом --enable-source-maps или с включённым покрытием кода, задав NODE_V8_COVERAGE=dir.
Модули MJS
// module.mjs
// In an ECMAScript module
import { findSourceMap, SourceMap } from 'node:module';
Модули CJS
// module.cjs
// In a CommonJS module
const { findSourceMap, SourceMap } = require('node:module');
module.findSourceMap(path)
-
path<строка> - Возвращает: <module.SourceMap> | <undefined> Возвращает
module.SourceMapесли source map найден,undefinedв противном случае.
path — разрешённый путь к файлу, для которого необходимо получить соответствующий source map.
Класс: module.SourceMap
new SourceMap(payload)
-
payload<Объект>
Создаёт новый экземпляр sourceMap.
payload — это объект с ключами, соответствующими формату Source map v3:
-
file: <строка> -
version: <число> -
sources: <строка[]> -
sourcesContent: <строка[]> -
names: <строка[]> -
mappings: <строка> -
sourceRoot: <строка>
sourceMap.payload
- Возвращает: <Объект>
Получение данных payload, используемых для построения экземпляра SourceMap.
sourceMap.findEntry(lineOffset, columnOffset)
-
lineOffset<число> Смещение строки (нумерация с 0) в сгенерированном источнике -
columnOffset<число> Смещение столбца (нумерация с 0) в сгенерированном источнике - Возвращает: <Объект>
При заданных смещениях строки и столбца в сгенерированном файле возвращает объект, представляющий область SourceMap в исходном файле, если найдена, или пустой объект в противном случае.
Возвращаемый объект содержит следующие ключи:
- generatedLine: <число> Смещение строки начала области в сгенерированном источнике
- generatedColumn: <число> Смещение столбца начала области в сгенерированном источнике
- originalSource: <строка> Имя файла исходного источника, как указано в SourceMap
- originalLine: <число> Смещение строки начала области в исходном источнике
- originalColumn: <число> Смещение столбца начала области в исходном источнике
- name: <строка>
Возвращаемое значение представляет собой исходную область, как она отображается в SourceMap, на основе смещений с нулевой индексацией, а не 1-индексированных номеров строк и столбцов, как они отображаются в сообщениях об ошибках и объектах CallSite.
Чтобы получить соответствующие 1-индексированные номера строк и столбцов из номера строки и номера столбца, как они сообщаются стеками ошибок и объектами CallSite, используйте sourceMap.findOrigin(lineNumber, columnNumber)
sourceMap.findOrigin(lineNumber, columnNumber)
-
lineNumber<число> Номер строки (индексируется с 1) вызываемого места в сгенерированном источнике -
columnOffset<число> Номер столбца (индексируется с 1) вызываемого места в сгенерированном источнике - Возвращает: <Объект>
При заданных номерах строки и столбца (индексируется с 1) вызываемого места в сгенерированном источнике находит соответствующее место вызова в исходном источнике.
Если предоставленные номер строки и номер столбца не найдены ни в одном source map, то возвращается пустой объект. В противном случае возвращаемый объект содержит следующие ключи:
- name: <строка> | <неопределённо> Имя области в source map, если оно было предоставлено
- fileName: <строка> Имя файла исходного источника, как указано в SourceMap
- lineNumber: <число> Номер строки (индексируется с 1) соответствующего места вызова в исходном источнике
- columnNumber: <число> Номер столбца (индексируется с 1) соответствующего места вызова в исходном источнике
© 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-v18.x/docs/api/module.html