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


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。