vm.runInNewContext(code[, contextObject[, options]])
历史
| 版本 | 变化 |
|---|---|
| v17.0.0、v16.12.0 | 向 |
| v14.6.0 | 现在支持 |
| v10.0.0 | 现在支持 |
| v6.3.0 | 现在支持 |
| v0.3.1 | 添加于:v0.3.1 |
参数
code<string> 要编译和运行的 JavaScript 代码。contextObject<Object> 将是 contextified 的对象。如果undefined,将创建一个新对象。options<Object>|<string>filename<string> 指定此脚本生成的堆栈跟踪中使用的文件名。 默认:'evalmachine.<anonymous>'。lineOffset<number> 指定在此脚本生成的堆栈跟踪中显示的行号偏移量。 默认:0。columnOffset<number> 指定在此脚本生成的堆栈跟踪中显示的first-line 列号偏移量。 默认:0。displayErrors<boolean> 当true时,如果在编译code时发生,则导致错误的代码行附加到堆栈跟踪。 默认:Errortrue。timeout<integer> 指定在终止执行之前执行code的毫秒数。如果执行终止,将抛出。该值必须是严格的正整数。ErrorbreakOnSigint<boolean>如果true, 接收SIGINT(Ctrl+C) 将终止执行并抛出一个Error.已通过以下方式附加的事件的现有处理程序process.on('SIGINT')在脚本执行期间被禁用,但之后继续工作。默认:false.contextName<string> 新创建的上下文的人类可读名称。 默认:'VM Context i',其中i是已创建上下文的升序数字索引。contextOrigin<string> Origin 对应于新创建的用于显示目的的上下文。源的格式应类似于 URL,但仅包含方案、主机和端口(如有必要),例如对象的URL属性的值。最值得注意的是,此字符串应省略尾部斜杠,因为它表示路径。 默认:url.origin''。contextCodeGeneration<Object>cachedData<Buffer> | <TypedArray> | <DataView> 为提供的源提供可选的Buffer或TypedArray或DataView以及 V8 的代码缓存数据。提供时,cachedDataRejected值将根据 V8 对数据的接受情况设置为true或false。produceCachedData<boolean>什么时候true和不cachedData存在时,V8 将尝试为code.成功后,一个Buffer使用 V8 的代码缓存数据将被生成并存储在cachedData归还的属性vm.Script实例。这cachedDataProduced值将设置为true或者false取决于代码缓存数据是否产生成功。这个选项是已弃用有利于script.createCachedData().默认:false.importModuleDynamically<Function>在评估此模块时调用import()叫做。如果未指定此选项,则调用import()会拒绝ERR_VM_DYNAMIC_IMPORT_CALLBACK_MISSING.此选项是实验模块 API 的一部分。我们不建议在生产环境中使用它。specifier<string> 说明符传递给import()script<vm.Script>importAssertions<Object>"assert"值传递给可选参数,如果未提供值,则为空对象。optionsExpression- 返回: <Module Namespace Object> | <vm.Module> 建议返回
vm.Module以利用错误跟踪,并避免包含then函数导出的命名空间出现问题。
microtaskMode<string> 如果设置为afterEvaluate,微任务(通过Promises 和async functions 安排的任务)将在脚本运行后立即运行。在这种情况下,它们包含在timeout和breakOnSigint范围内。
- 返回: <any> 脚本中执行的最后一条语句的结果。
vm.runInNewContext() 首先将给定的 contextObject 上下文化(或创建一个新的 contextObject 如果作为 undefined 传递),编译 code ,在创建的上下文中运行它,然后返回结果。运行代码无权访问本地范围。
如果options 是字符串,则它指定文件名。
以下示例编译并执行递增全局变量并设置新变量的代码。这些全局变量包含在 contextObject 中。
const vm = require('node:vm');
const contextObject = {
animal: 'cat',
count: 2
};
vm.runInNewContext('count += 1; name = "kitty"', contextObject);
console.log(contextObject);
// Prints: { animal: 'cat', count: 3, name: 'kitty' }
相关用法
- Node.js vm.runInNewContext()用法及代码示例
- Node.js vm.runInThisContext(code[, options])用法及代码示例
- Node.js vm.runInThisContext()用法及代码示例
- Node.js vm.runInContext()用法及代码示例
- Node.js vm.runInContext(code, contextifiedObject[, options])用法及代码示例
- Node.js vm.SyntheticModule.setExport(name, value)用法及代码示例
- Node.js vm.SourceTextModule.createCachedData()用法及代码示例
- Node.js vm.createContext([contextObject[, options]])用法及代码示例
- Node.js vm.Module用法及代码示例
- Node.js vm.isContext()用法及代码示例
- Node.js vm.measureMemory([options])用法及代码示例
- Node.js vm.SyntheticModule用法及代码示例
- Node.js vm.createContext()用法及代码示例
- Node.js vm.Script.createCachedData()用法及代码示例
- Node.js vm.Script.runInNewContext([contextObject[, options]])用法及代码示例
- Node.js vm.Script.runInThisContext([options])用法及代码示例
- Node.js vm.Script.runInContext(contextifiedObject[, options])用法及代码示例
- Node.js vm.Module.link(linker)用法及代码示例
- Node.js v8.getHeapSpaceStatistics()用法及代码示例
- Node.js v8.deserializer.readRawBytes()用法及代码示例
- Node.js v8.deserializer.readUint32()用法及代码示例
- Node.js v8.serializer.writeRawBytes()用法及代码示例
- Node.js v8.writeHeapSnapshot([filename])用法及代码示例
- Node.js v8.Deserializer.readUint32()用法及代码示例
- Node.js v8.getHeapCodeStatistics()用法及代码示例
注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 vm.runInNewContext(code[, contextObject[, options]])。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
