當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Node.js script.runInContext()用法及代碼示例


script.runInContext()方法用於運行已編譯的代碼,該代碼存在於指定的contextifiedObject中的vm.Script對象內部,並返回輸出。但是,正在運行的代碼無法訪問本地作用域。

用法:

script.runInContext( contextifiedObject, options )

參數:該方法接受上述和以下所述的兩個參數:



  • contextifiedObject:它是vm.createContext()方法返回的上下文對象。
  • options:它是一個可選參數,返回對象。它具有以下參數:
    1. displayErrors:它包含一個布爾值,即如果在編譯代碼時引發錯誤並且由於該行引發錯誤的代碼行鏈接到堆棧跟蹤,則為true。默認情況下,其值為true。
    2. timeout:它包含一個整數值,該整數指定在結束執行之前執行指定代碼所花費的毫秒數。但是,如果執行關閉,則會發生錯誤。並且此值必須絕對為正整數。
    3. breakOnSigint:它包含一個布爾值。如果為true,則在提供SIGINT即(Ctrl + C)後將立即停止執行,如果停止執行,則會引發錯誤。默認情況下,其值為false。

返回值:它返回腳本中執行的最後一條語句的結果。

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

範例1:

// Node.js program to demonstrate the      
// script.runInContext() method 
  
// Including util and vm module 
const util = require('util'); 
const vm = require('vm'); 
  
// Constructing context 
const contextobj = { 
  name:'Nidhi', 
  articles:60 
}; 
  
// Constructing script 
const script = new vm.Script('articles *= 10;'); 
  
// Contextifying object 
vm.createContext(contextobj); 
  
// Calling runInContext method 
script.runInContext(contextobj); 
  
// Displays output 
console.log(contextobj);

輸出:

{ name:'Nidhi', articles:600 }

在此,商品為(60 * 10 = 600)為600。

範例2:

// Node.js program to demonstrate the      
// script.runInContext() method 
  
// Including util and vm module 
const util = require('util'); 
const vm = require('vm'); 
  
// Constructing context 
const contextobj = { globalVar:6 }; 
  
// Constructing script 
const script = new vm.Script('globalVar += 12;'); 
  
// Contextifying object 
vm.createContext(contextobj); 
  
// Calling for loop 
for (let i = 1; i < 4; i++) { 
  
// Calling runInContext method 
script.runInContext(contextobj); 
} 
  
// Displays output 
console.log("The output is:", contextobj);

輸出:

The output is: { globalVar:42 }

參考: https://nodejs.org/api/vm.html#vm_script_runincontext_contextifiedobject_options




相關用法


注:本文由純淨天空篩選整理自nidhi1352singh大神的英文原創作品 Node.js | script.runInContext() Method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。