- assert断言
- async_hooks异步钩子
- async_hooks/context异步上下文
- buffer缓冲区
- C++插件
- C/C++插件(使用Node-API)
- C++嵌入器
- child_process子进程
- cluster集群
- CLI命令行
- console控制台
- Corepack核心包
- crypto加密
- crypto/webcrypto网络加密
- debugger调试器
- deprecation弃用
- dgram数据报
- diagnostics_channel诊断通道
- dns域名服务器
- domain域
- Error错误
- events事件触发器
- fs文件系统
- global全局变量
- http超文本传输协议
- http2超文本传输协议2.0
- https安全超文本传输协议
- inspector检查器
- Intl国际化
- module模块
- module/cjsCommonJS模块
- module/esmECMAScript模块
- module/package包模块
- net网络
- os操作系统
- path路径
- perf_hooks性能钩子
- policy安全策略
- process进程
- punycode域名代码
- querystring查询字符串
- readline逐行读取
- repl交互式解释器
- report诊断报告
- stream流
- stream/web网络流
- string_decoder字符串解码器
- test测试
- timers定时器
- tls安全传输层
- trace_events跟踪事件
- tty终端
- url网址
- util实用工具
- v8引擎
- vm虚拟机
- wasi网络汇编系统接口
- worker_threads工作线程
- zlib压缩
Node.js v18.7.0 文档
- Node.js 18.7.0
-
►
目录
- vm 虚拟机
vm.Script
类vm.Module
类vm.SourceTextModule
类vm.SyntheticModule
类vm.compileFunction(code[, params[, options]])
vm.createContext([contextObject[, options]])
vm.isContext(object)
vm.measureMemory([options])
vm.runInContext(code, contextifiedObject[, options])
vm.runInNewContext(code[, contextObject[, options]])
vm.runInThisContext(code[, options])
- 示例:在 VM 中运行 HTTP Server
- 上下文隔离化一个对象意味着什么?
- 与异步任务和 Promise 的超时交互
- vm 虚拟机
-
►
索引
- assert 断言
- async_hooks 异步钩子
- async_hooks/context 异步上下文
- buffer 缓冲区
- C++插件
- C/C++插件(使用Node-API)
- C++嵌入器
- child_process 子进程
- cluster 集群
- CLI 命令行
- console 控制台
- Corepack 核心包
- crypto 加密
- crypto/webcrypto 网络加密
- debugger 调试器
- deprecation 弃用
- dgram 数据报
- diagnostics_channel 诊断通道
- dns 域名服务器
- domain 域
- Error 错误
- events 事件触发器
- fs 文件系统
- global 全局变量
- http 超文本传输协议
- http2 超文本传输协议2.0
- https 安全超文本传输协议
- inspector 检查器
- Intl 国际化
- module 模块
- module/cjs CommonJS模块
- module/esm ECMAScript模块
- module/package 包模块
- net 网络
- os 操作系统
- path 路径
- perf_hooks 性能钩子
- policy 安全策略
- process 进程
- punycode 域名代码
- querystring 查询字符串
- readline 逐行读取
- repl 交互式解释器
- report 诊断报告
- stream 流
- stream/web 网络流
- string_decoder 字符串解码器
- test 测试
- timers 定时器
- tls 安全传输层
- trace_events 跟踪事件
- tty 终端
- url 网址
- util 实用工具
- v8 引擎
- vm 虚拟机
- wasi 网络汇编系统接口
- worker_threads 工作线程
- zlib 压缩
- ► 其他版本
- 文档搜索
- 会员登录
目录
- vm 虚拟机
vm.Script
类vm.Module
类vm.SourceTextModule
类vm.SyntheticModule
类vm.compileFunction(code[, params[, options]])
vm.createContext([contextObject[, options]])
vm.isContext(object)
vm.measureMemory([options])
vm.runInContext(code, contextifiedObject[, options])
vm.runInNewContext(code[, contextObject[, options]])
vm.runInThisContext(code[, options])
- 示例:在 VM 中运行 HTTP Server
- 上下文隔离化一个对象意味着什么?
- 与异步任务和 Promise 的超时交互
vm 虚拟机#
node:vm
模块允许在 V8 虚拟机上下文中编译和运行代码。
vm.Script
类#
vm.Script
类的实例包含可以在特定上下文中执行的预编译脚本。
new vm.Script(code[, options])
#
如果 options
是字符串,则指定文件名。
script.createCachedData()
#
创建可与 Script
构造函数的 cachedData
选项一起使用的代码缓存。
返回 Buffer
。
此方法可以随时调用任意次数。
script.runInContext(contextifiedObject[, options])
#
在给定的 contextifiedObject
中运行 vm.Script
对象包含的编译代码并返回结果。
运行代码无权访问本地作用域。
script.runInNewContext([contextObject[, options]])
#
首先对给定的 contextObject
进行上下文隔离化,在创建的上下文中运行 vm.Script
对象包含的编译代码,并返回结果。
运行代码无权访问本地作用域。
script.runInThisContext([options])
#
在当前 global
对象的上下文中运行 vm.Script
包含的编译代码。
运行代码无权访问局部作用域,但可以访问当前 global
对象。
vm.Module
类#
此特性仅在启用 --experimental-vm-modules
命令标志时可用。
module.dependencySpecifiers
#
该模块所有依赖项的说明符。 返回的数组被冻结,不允许对其进行任何更改。
module.error
#
如果 module.status
为 'errored'
,则该属性包含模块在求值过程中抛出的异常。
如果状态是别的,访问这个属性会导致抛出异常。
module.evaluate([options])
#
评估模块。
module.identifier
#
当前模块的标识符,在构造函数中设置。
module.link(linker)
#
链接模块依赖项。 此方法必须在求值前调用,并且每个模块只能调用一次。
module.namespace
#
模块的命名空间对象。
这仅在链接 (module.link()
) 完成后可用。
module.status
#
模块的当前状态。 将是以下之一:
vm.SourceTextModule
类#
此特性仅在启用 --experimental-vm-modules
命令标志时可用。
new vm.SourceTextModule(code[, options])
#
创建新的 SourceTextModule
实例。
sourceTextModule.createCachedData()
#
创建可与 SourceTextModule
构造函数的 cachedData
选项一起使用的代码缓存。
返回 Buffer
。
在评估模块之前,可以多次调用此方法。
vm.SyntheticModule
类#
此特性仅在启用 --experimental-vm-modules
命令标志时可用。
new vm.SyntheticModule(exportNames, evaluateCallback[, options])
#
创建新的 SyntheticModule
实例。
syntheticModule.setExport(name, value)
#
此方法用于模块链接后设置导出的值。
如果在链接模块之前调用,则会抛出 ERR_VM_MODULE_STATUS
错误。
vm.compileFunction(code[, params[, options]])
#
将给定的代码编译到提供的上下文中(如果没有提供上下文,则使用当前上下文),并返回它包装在具有给定 params
的函数中。
vm.createContext([contextObject[, options]])
#
如果给定 contextObject
,vm.createContext()
方法将准备那个对象,以便它可以用于调用 vm.runInContext()
或 script.runInContext()
。
在此类脚本中,contextObject
将是全局对象,保留其所有现有属性,但也具有任何标准全局对象具有的内置对象和函数。
在 vm 模块运行的脚本之外,全局变量将保持不变。
vm.isContext(object)
#
如果给定的 object
对象已使用 vm.createContext()
上下文隔离化,则返回 true
。
vm.measureMemory([options])
#
测量 V8 已知的内存并被当前 V8 隔离已知的所有上下文或主上下文使用。
vm.runInContext(code, contextifiedObject[, options])
#
vm.runInContext()
方法编译 code
,在 contextifiedObject
的上下文中运行它,然后返回结果。
运行代码无权访问本地作用域。
contextifiedObject
对象必须之前已经使用 vm.createContext()
方法上下文隔离化。
vm.runInNewContext(code[, contextObject[, options]])
#
vm.runInNewContext()
首先将给定的 contextObject
上下文化(如果作为 undefined
传入,则创建新的 contextObject
),编译 code
,在创建的上下文中运行它,然后返回结果。
运行代码无权访问本地作用域。
vm.runInThisContext(code[, options])
#
vm.runInThisContext()
编译 code
,在当前 global
的上下文中运行它并返回结果。
运行代码无权访问局部作用域,但可以访问当前 global
对象。
示例:在 VM 中运行 HTTP Server#
当使用 script.runInThisContext()
或 vm.runInThisContext()
时,代码在当前 V8 全局上下文中执行。
传给此 VM 上下文的代码将有自己的隔离作用域。
上下文隔离化一个对象意味着什么?#
在 Node.js 中执行的所有 JavaScript 都在 "上下文" 的作用域内运行。 根据 V8 嵌入器指南:
与异步任务和 Promise 的超时交互#
Promise
和 async function
可以异步地调度 JavaScript 引擎运行的任务。
默认情况下,这些任务在当前堆栈上的所有 JavaScript 函数执行完毕后运行。
这允许转义 timeout
和 breakOnSigint
选项的功能。