Node.js v18.18.2 文档


目录

模块:node:module API#

Module对象#

在与Module实例( CommonJS模块中常见的module变量)交互时提供通用实用方法 。通过import 'node:module'require('node:module')访问。

module.builtinModules#

Node.js 提供的所有模块的名称列表。可用于验证模块是否由第三方维护。

此上下文中的module模块包装器提供的对象不同。要访问它,需要Module模块:

// module.mjs
// In an ECMAScript module
import { builtinModules as builtin } from 'node:module';// module.cjs
// In a CommonJS module
const builtin = require('node:module').builtinModules;

module.createRequire(filename)#

  • filename <字符串> | <URL>用于构造 require 函数的文件名。必须是文件 URL 对象、文件 URL 字符串或绝对路径字符串。
  • 返回:<require>需要函数
import { createRequire } from 'node:module';
const require = createRequire(import.meta.url);

// sibling-module.js is a CommonJS module.
const siblingModule = require('./sibling-module'); 

module.isBuiltin(moduleName)#

import { isBuiltin } from 'node:module';
isBuiltin('node:fs'); // true
isBuiltin('fs'); // true
isBuiltin('wss'); // false 

module.syncBuiltinESMExports()#

module.syncBuiltinESMExports()方法更新内置ES 模块的所有实时绑定,以匹配CommonJS导出的属性。它不会添加或删除ES Modules中导出的名称。

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);
}); 

Source map v3 支持#

稳定性:1 - 实验性

用于与源映射缓存交互的帮助器。当启用源映射解析并且 在模块的页脚中找到源映射包含指令时,会填充此缓存。

要启用源映射解析,Node.js 必须使用标志 --enable-source-maps运行,或者通过设置 NODE_V8_COVERAGE=dir启用代码覆盖率。

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

module.findSourceMap(path)#

path是应获取相应源映射的文件的解析路径。

类:module.SourceMap#

new SourceMap(payload)#

创建一个新的sourceMap实例。

payload是一个对象,其键与Source map v3 格式匹配:

sourceMap.payload#

用于构造SourceMap实例的有效负载的 Getter。

sourceMap.findEntry(lineOffset, columnOffset)#
  • lineOffset <number>生成的源中的零索引行号偏移量
  • columnOffset <number>生成的源中的零索引列号偏移量
  • 返回:<对象>

给定生成的源文件中的行偏移量和列偏移量,如果找到,则返回表示原始文件中的 SourceMap 范围的对象,如果没有,则返回空对象。

返回的对象包含以下键:

  • generatedLine: <number>生成源中范围开头的行偏移量
  • generatedColumn: <number>生成的源中范围开始的列偏移量
  • OriginalSource: <string>原始源的文件名,如 SourceMap 中报告的那样
  • OriginalLine: <number>原始源中范围开头的行偏移量
  • OriginalColumn: <number>原始源中范围开始的列偏移量
  • 名称:<字符串>

返回的值表示 SourceMap 中显示的原始范围,基于零索引偏移量,而不是错误消息和 CallSite 对象中显示的 1 索引行号和列号。

要从错误堆栈和 CallSite 对象报告的 lineNumber 和 columnNumber 中获取相应的 1 索引行号和列号,请使用sourceMap.findOrigin(lineNumber, columnNumber)

sourceMap.findOrigin(lineNumber, columnNumber)#
  • lineNumber <number>生成的源中调用站点的 1 索引行号
  • columnOffset <number>生成的源中调用站点的 1 索引列号
  • 返回:<对象>

给定生成源中调用站点的 1 索引行号和列号,在原始源中查找相应的调用站点位置。

如果在任何源映射中都找不到提供的行号和列号,则返回空对象。否则,返回的对象包含以下键:

  • 名称:<字符串> | <undefined>源映射中范围的名称(如果提供了)
  • fileName: <string>原始源的文件名,如 SourceMap 中所报告
  • lineNumber: <number>原始源中相应调用站点的 1 索引 lineNumber
  • columnNumber: <number>原始源中相应调用站点的 1 索引的 columnNumber

NodeJS中文文档为Read dev Docs平台提供托管,中文NodeJS文档均由英文版NodeJS文档翻译,版权属于nodejs.org