Node.js v16.18.1 文档


目录

vm 虚拟机#

中英对照

node:vm 模块允许在 V8 虚拟机上下文中编译和运行代码。


vm.Script#

中英对照

vm.Script 类的实例包含可以在特定上下文中执行的预编译脚本。

new vm.Script(code[, options])#

中英对照

    如果 options 是字符串,则指定文件名。

    script.cachedDataRejected#

    中英对照

      当提供 cachedData 来创建 vm.Script 时,该值将根据 V8 对数据的接受情况设置为 truefalse。 否则值为 undefined

      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]])#

                                                中英对照

                                                  如果给定 contextObjectvm.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 的超时交互#

                                                            中英对照

                                                            Promiseasync function 可以异步地调度 JavaScript 引擎运行的任务。 默认情况下,这些任务在当前堆栈上的所有 JavaScript 函数执行完毕后运行。 这允许转义 timeoutbreakOnSigint 选项的功能。

                                                            
                                                            

                                                            
                                                            

                                                            返回顶部