mirror of
https://github.com/nodejs/node.git
synced 2025-05-07 19:56:48 +00:00

This helps catch broken links as part of the test suite. This also improves the user experience when browsing the markdown files. PR-URL: https://github.com/nodejs/node/pull/35191 Fixes: https://github.com/nodejs/node/issues/35189 Reviewed-By: Derek Lewis <DerekNonGeneric@inf.is> Reviewed-By: Jiawen Geng <technicalcute@gmail.com> Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com> Reviewed-By: Richard Lau <riclau@uk.ibm.com> Reviewed-By: Rich Trott <rtrott@gmail.com>
214 lines
5.2 KiB
Markdown
214 lines
5.2 KiB
Markdown
# Modules: `module` API
|
|
|
|
<!--introduced_in=v0.3.7-->
|
|
|
|
## 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`
|
|
<!-- YAML
|
|
added:
|
|
- v9.3.0
|
|
- v8.10.0
|
|
- v6.13.0
|
|
-->
|
|
|
|
* {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)`
|
|
<!-- YAML
|
|
added: v12.2.0
|
|
-->
|
|
|
|
* `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)`
|
|
<!-- YAML
|
|
added: v10.12.0
|
|
deprecated: v12.2.0
|
|
-->
|
|
|
|
> 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()`
|
|
<!-- YAML
|
|
added: v12.12.0
|
|
-->
|
|
|
|
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
|
|
<!-- YAML
|
|
added:
|
|
- v13.7.0
|
|
- v12.17.0
|
|
-->
|
|
|
|
> 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])`
|
|
<!-- YAML
|
|
added:
|
|
- v13.7.0
|
|
- v12.17.0
|
|
-->
|
|
|
|
* `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`
|
|
<!-- YAML
|
|
added:
|
|
- v13.7.0
|
|
- v12.17.0
|
|
-->
|
|
|
|
#### `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
|