当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js script.runInNewContext()用法及代码示例


script.runInNewContext()方法首先将声明的contextObject上下文化,在创建的上下文中的vm.Script对象内部运行编译后的代码,然后返回输出。但是,正在运行的代码无法访问本地作用域。

用法:

script.runInNewContext( contextObject, options )

参数:该方法接受上述和以下所述的两个参数:



  • contextObject:该对象将被上下文化,如果未定义,则将创建一个新对象,
  • options:它是可选的,并返回Object。

    它具有以下参数:

    1. displayErrors:它包含一个布尔值,即如果在编译代码时引发错误,并且由于该原因而引发错误的代码行链接到堆栈跟踪,则为true。默认情况下,其值为true。
    2. timeout:它包含一个整数值,该整数指定在结束执行之前执行指定代码所花费的毫秒数。但是,如果执行关闭,则会发生错误。并且此值必须绝对为正整数。
    3. breakOnSigint:它拥有一个布尔值。如果为true,则在提供SIGINT即(Ctrl + C)后将立即停止执行。并且如果执行停止,则会引发错误。默认情况下,其值为false。
    4. contextName:它包含一个字符串。它是新生成的上下文的可读名称。默认情况下是“ VM Context i”,其中,i是所生成的上下文的索引,该索引以数字形式递增。
    5. contextOrigin:它包含一个字符串。它是与最近生成的上下文等效的来源。此外,原点必须像URL一样形成。其默认值为“”。
    6. contextCodeGeneration:它是对象类型。
      它具有以下参数:
      • strings:它包含一个布尔值,如果将其设置为false,则对函数构造函数或eval的任何调用都将引发错误,即EvalError。其默认值为true。
      • wasm:它包含一个布尔值,如果将其设置为false,则任何尝试编译WebAssembly模块的尝试都将引发错误,即WebAssembly.CompileError。默认情况下,其值为true。

返回值:它返回脚本中执行的最后一条语句的结果。

以下示例说明了Node.js中script.runInNewContext()方法的使用:

范例1:

// Node.js program to demonstrate the      
// script.runInNewContext() method 
  
// Including util and vm module 
const util = require('util'); 
const vm = require('vm'); 
  
// Constructing context 
const context = { x:3, y:4 }; 
  
// Constructing a script 
const script = new vm.Script('x *=11, y *=4;'); 
  
  
// Calling runInNewContext method 
script.runInNewContext(context); 
  
// Displays output 
console.log("The output is:", context);

输出:

The output is: { x:33, y:16 }

范例2:

// Node.js program to demonstrate the      
// script.runInNewContext() method 
  
// Including util and vm module 
const util = require('util'); 
const vm = require('vm'); 
  
// Creating contexts 
cont = { 
      animal:'dog', 
      total_number:5 
    }; 
  
// Creating script with its parameters 
var script = vm.createScript( 
    'total_number += 5; name = "Sheru"', 'file.vm'); 
  
// Calling runInNewContext method 
script.runInNewContext(cont); 
  
// Displays output 
console.log(cont);

输出:

{ animal:'dog', total_number:10, name:'Sheru' }

参考: https://nodejs.org/api/vm.html#vm_script_runinnewcontext_contextobject_options




相关用法


注:本文由纯净天空筛选整理自nidhi1352singh大神的英文原创作品 Node.js | script.runInNewContext() Method。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。