- 断言测试
- 异步上下文跟踪
- 异步钩子
- 缓冲(Buffer)
- C++ 插件
- 使用 Node-API 的 C/C++ 插件
- C++ 嵌入 Node环境
- 子进程(Child processes)
- 集群(Cluster)
- 命令行选项
- 控制台(Console)
- 核心包(Corepack)
- 加密(Crypto)
- 调试器(Debugger)
- 已弃用的 API
- 诊断通道(Diagnostics Channel)
- 域名系统(DNS)
- 域(Domain)
- 错误(Errors)
- 事件(Events)
- 文件系统(File system)
- 全局变量(Globals)
- HTTP
- HTTP/2
- HTTPS
- 检查器(Inspector)
- 国际化
- 模块:CommonJS 模块
- 模块:ECMAScript 模块
- 模块:
node:module
API - 模块:packages 模块
- 网络(Net)
- 系统(OS)
- 路径(Path)
- 性能挂钩(Performance hooks)
- 性能挂钩(Permissions)
- 进程(Process)
- Punycode 国际化域名编码
- 查询字符串(Query strings)
- 命令行库(Readline)
- REPL 交互式编程环境
- 诊断报告
- 单个可执行应用程序
- Stream 流
- 字符串解码器
- 单元测试
- 定时器(Timers)
- 传输层安全/SSL
- 跟踪事件
- TTY
- UDP/数据报
- URL
- 实用程序
- V8
- 虚拟机
- WebAssembly
- Web加密 API(Web Crypto API)
- 网络流 API(Web Streams API)
- 工作线程(Worker threads)
- zlib
Node.js v18.18.2 文档
- Node.js v18.18.2
- ► 目录
-
►
索引
- 断言测试
- 异步上下文跟踪
- 异步钩子
- 缓冲(Buffer)
- C++ 插件
- 使用 Node-API 的 C/C++ 插件
- C++ 嵌入 Node环境
- 子进程(Child processes)
- 集群(Cluster)
- 命令行选项
- 控制台(Console)
- 核心包(Corepack)
- 加密(Crypto)
- 调试器(Debugger)
- 已弃用的 API
- 诊断通道(Diagnostics Channel)
- 域名系统(DNS)
- 域(Domain)
- 错误(Errors)
- 事件(Events)
- 文件系统(File system)
- 全局变量(Globals)
- HTTP
- HTTP/2
- HTTPS
- 检查器(Inspector)
- 国际化
- 模块:CommonJS 模块
- 模块:ECMAScript 模块
- 模块:
node:module
API - 模块:packages 模块
- 网络(Net)
- 系统(OS)
- 路径(Path)
- 性能挂钩(Performance hooks)
- 性能挂钩(Permissions)
- 进程(Process)
- Punycode 国际化域名编码
- 查询字符串(Query strings)
- 命令行库(Readline)
- REPL 交互式编程环境
- 诊断报告
- 单个可执行应用程序
- Stream 流
- 字符串解码器
- 单元测试
- 定时器(Timers)
- 传输层安全/SSL
- 跟踪事件
- TTY
- UDP/数据报
- URL
- 实用程序
- V8
- 虚拟机
- WebAssembly
- Web加密 API(Web Crypto API)
- 网络流 API(Web Streams API)
- 工作线程(Worker threads)
- zlib
- ► 其他版本
- ► 选项
模块: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)
#
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)
#
moduleName
<string>模块名称- 返回:如果模块是内置的,<boolean>返回 true,否则返回 false
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 支持#
用于与源映射缓存交互的帮助器。当启用源映射解析并且 在模块的页脚中找到源映射包含指令时,会填充此缓存。
要启用源映射解析,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> | <undefined>如果找到源映射,则返回
module.SourceMap
,否则返回undefined
。
path
是应获取相应源映射的文件的解析路径。
类:module.SourceMap
#
new SourceMap(payload)
#
payload
<对象>
创建一个新的sourceMap
实例。
payload
是一个对象,其键与Source map v3 格式匹配:
file
:<字符串>version
:<数字>sources
: <字符串[]>sourcesContent
: <字符串[]>names
: <字符串[]>mappings
:<字符串>sourceRoot
:<字符串>
sourceMap.payload
#
- 返回:<对象>
用于构造SourceMap
实例的有效负载的 Getter。
sourceMap.findEntry(lineOffset, columnOffset)
#
给定生成的源文件中的行偏移量和列偏移量,如果找到,则返回表示原始文件中的 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)
#
给定生成源中调用站点的 1 索引行号和列号,在原始源中查找相应的调用站点位置。
如果在任何源映射中都找不到提供的行号和列号,则返回空对象。否则,返回的对象包含以下键:
- 名称:<字符串> | <undefined>源映射中范围的名称(如果提供了)
- fileName: <string>原始源的文件名,如 SourceMap 中所报告
- lineNumber: <number>原始源中相应调用站点的 1 索引 lineNumber
- columnNumber: <number>原始源中相应调用站点的 1 索引的 columnNumber