# Modules: `module` API ## The `Module` object * {Object} Provides general utility methods when interacting with instances of `Module`, the [`module`][] variable often seen in [CommonJS][] modules. Accessed via `import 'module'` or `require('module')`. ### `module.builtinModules` * {string[]} A list of the names of all modules provided by Node.js. Can be used to verify if a module is maintained by a third party or not. `module` in this context isn't the same object that's provided by the [module wrapper][]. To access it, require the `Module` module: ```js // module.mjs // In an ECMAScript module import { builtinModules as builtin } from 'module'; ``` ```js // module.cjs // In a CommonJS module const builtin = require('module').builtinModules; ``` ### `module.createRequire(filename)` * `filename` {string|URL} Filename to be used to construct the require function. Must be a file URL object, file URL string, or absolute path string. * Returns: {require} Require function ```js 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)` > Stability: 0 - Deprecated: Please use [`createRequire()`][] instead. * `filename` {string} Filename to be used to construct the relative require function. * Returns: {require} Require function ```js const { createRequireFromPath } = require('module'); const requireUtil = createRequireFromPath('../src/utils/'); // Require `../src/utils/some-tool` requireUtil('./some-tool'); ``` ### `module.syncBuiltinESMExports()` The `module.syncBuiltinESMExports()` method updates all the live bindings for builtin [ES Modules][] to match the properties of the [CommonJS][] exports. It does not add or remove exported names from the [ES Modules][]. ```js 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); }); ``` ## Source map v3 support > Stability: 1 - Experimental Helpers for interacting with the source map cache. This cache is populated when source map parsing is enabled and [source map include directives][] are found in a modules' footer. To enable source map parsing, Node.js must be run with the flag [`--enable-source-maps`][], or with code coverage enabled by setting [`NODE_V8_COVERAGE=dir`][]. ```js // module.mjs // In an ECMAScript module import { findSourceMap, SourceMap } from 'module'; ``` ```js // module.cjs // In a CommonJS module const { findSourceMap, SourceMap } = require('module'); ``` ### `module.findSourceMap(path[, error])` * `path` {string} * `error` {Error} * Returns: {module.SourceMap} `path` is the resolved path for the file for which a corresponding source map should be fetched. The `error` instance should be passed as the second parameter to `findSourceMap` in exceptional flows, such as when an overridden [`Error.prepareStackTrace(error, trace)`][] is invoked. Modules are not added to the module cache until they are successfully loaded. In these cases, source maps are associated with the `error` instance along with the `path`. ### Class: `module.SourceMap` #### `new SourceMap(payload)` * `payload` {Object} Creates a new `sourceMap` instance. `payload` is an object with keys matching the [Source map v3 format][]: * `file`: {string} * `version`: {number} * `sources`: {string[]} * `sourcesContent`: {string[]} * `names`: {string[]} * `mappings`: {string} * `sourceRoot`: {string} #### `sourceMap.payload` * Returns: {Object} Getter for the payload used to construct the [`SourceMap`][] instance. #### `sourceMap.findEntry(lineNumber, columnNumber)` * `lineNumber` {number} * `columnNumber` {number} * Returns: {Object} Given a line number and column number in the generated source file, returns an object representing the position in the original file. The object returned consists of the following keys: * generatedLine: {number} * generatedColumn: {number} * originalSource: {string} * originalLine: {number} * originalColumn: {number} [CommonJS]: modules.md [ES Modules]: esm.md [Source map v3 format]: https://sourcemaps.info/spec.html#h.mofvlxcwqzej [`--enable-source-maps`]: cli.md#cli_enable_source_maps [`Error.prepareStackTrace(error, trace)`]: https://v8.dev/docs/stack-trace-api#customizing-stack-traces [`NODE_V8_COVERAGE=dir`]: cli.md#cli_node_v8_coverage_dir [`SourceMap`]: #module_class_module_sourcemap [`createRequire()`]: #module_module_createrequire_filename [`module`]: modules.md#modules_the_module_object [module wrapper]: modules.md#modules_the_module_wrapper [source map include directives]: https://sourcemaps.info/spec.html#h.lmz475t4mvbx