script.runInNewContext([contextObject[, options]])
历史
版本 | 变化 |
---|---|
v14.6.0 | 现在支持 |
v10.0.0 | 现在支持 |
v6.3.0 | 现在支持 |
v0.3.1 | 添加于:v0.3.1 |
参数
contextObject
<Object> 将是 contextified 的对象。如果undefined
,将创建一个新对象。options
<Object>displayErrors
<boolean> 当true
时,如果在编译code
时发生Error
true
。timeout
<integer> 指定在终止执行之前执行code
的毫秒数。如果执行终止,将抛出Error
breakOnSigint
<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>microtaskMode
<string> 如果设置为afterEvaluate
,微任务(通过Promise
s 和async function
s 安排的任务)将在脚本运行后立即运行。在这种情况下,它们包含在timeout
和breakOnSigint
范围内。
- 返回: <any> 脚本中执行的最后一条语句的结果。
首先将给定的 contextObject
上下文化,在创建的上下文中运行 vm.Script
对象包含的编译代码,并返回结果。运行代码无权访问本地范围。
以下示例编译设置全局变量的代码,然后在不同的上下文中多次执行该代码。全局变量设置在每个单独的 context
上并包含在其中。
const vm = require('node:vm');
const script = new vm.Script('globalVar = "set"');
const contexts = [{}, {}, {}];
contexts.forEach((context) => {
script.runInNewContext(context);
});
console.log(contexts);
// Prints: [{ globalVar: 'set' }, { globalVar: 'set' }, { globalVar: 'set' }]
相关用法
- Node.js vm.Script.runInThisContext([options])用法及代码示例
- Node.js vm.Script.runInContext(contextifiedObject[, options])用法及代码示例
- Node.js vm.Script.createCachedData()用法及代码示例
- Node.js vm.SyntheticModule.setExport(name, value)用法及代码示例
- Node.js vm.SourceTextModule.createCachedData()用法及代码示例
- Node.js vm.SyntheticModule用法及代码示例
- Node.js vm.createContext([contextObject[, options]])用法及代码示例
- Node.js vm.Module用法及代码示例
- Node.js vm.runInThisContext(code[, options])用法及代码示例
- Node.js vm.isContext()用法及代码示例
- Node.js vm.measureMemory([options])用法及代码示例
- Node.js vm.runInNewContext()用法及代码示例
- Node.js vm.runInNewContext(code[, contextObject[, options]])用法及代码示例
- Node.js vm.createContext()用法及代码示例
- Node.js vm.runInThisContext()用法及代码示例
- Node.js vm.runInContext()用法及代码示例
- Node.js vm.runInContext(code, 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.Script.runInNewContext([contextObject[, options]])。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。