Module 基礎模組

模組vm

沙箱模組,用於隔離不同安全等級的運作環境

透過建立隔離沙箱,可以限制腳本執行時可以接觸的資源,隔離不同腳本執行環境,並可以為不同的環境客製化基礎模組,以保障整體運作環境的安全。

下面的範例建立一個沙箱,限制只允許存取全域基礎模組中的assert模組,並添加a 和b 兩個自訂模組:

1 2 3 4 5 6 7 8
var vm = require('vm'); var sbox = new vm.SandBox({ a: 100, b: 200, assert: require('assert') }); var mod_in_sbox = sbox.require('./path/to/mod');

物件

SandBox

創建一個SandBox對象,參見SandBox

1
SandBox vm.SandBox;

Script

創建一個Script對象,參見Script

1
Script vm.Script;

靜態函數

createContext

建立一個上下文對象

1 2
static Object vm.createContext(Object contextObject = {}, Object opts = {});

呼叫參數:

  • contextObject: Object, 指定將被上下文化的對象
  • opts: Object, 指定上下文選項

回傳結果:

  • Object, 回傳上下文對象

isContext

如果給定的object物件已使用vm.createContext() 進行上下文化,則回傳true

1
static Boolean vm.isContext(Object contextObject);

呼叫參數:

  • contextObject: Object, 指定要檢查的對象

回傳結果:


runInContext

在給定contextifiedObject 內執行code 指定的程式碼並傳回結果

1 2 3
static Value vm.runInContext(String code, Object contextifiedObject, Object opts = {});

呼叫參數:

  • code: String, 指定要編譯和執行的腳本程式碼
  • contextifiedObject: Object, 指定運行時的上下文對象
  • opts: Object, 指定運行選項

回傳結果:

  • Value, 返回運行結果

在給定contextifiedObject 內執行code 指定的程式碼並傳回結果

1 2 3
static Value vm.runInContext(String code, Object contextifiedObject, String filename);

呼叫參數:

  • code: String, 指定要編譯和執行的腳本程式碼
  • contextifiedObject: Object, 指定運行時的上下文對象
  • filename: String, 指定腳本檔名

回傳結果:

  • Value, 返回運行結果

runInNewContext

使用給定的contextObject 在建立的上下文中, 在其中執行code 指定的程式碼並傳回結果

1 2 3
static Value vm.runInNewContext(String code, Object contextObject = {}, Object opts = {});

呼叫參數:

  • code: String, 指定要編譯和執行的腳本程式碼
  • contextObject: Object, 指定將被上下文化的對象
  • opts: Object, 指定運行選項

回傳結果:

  • Value, 返回運行結果

使用給定的contextObject 在建立的上下文中, 在其中執行code 指定的程式碼並傳回結果

1 2 3
static Value vm.runInNewContext(String code, Object contextObject = {}, String filename);

呼叫參數:

  • code: String, 指定要編譯和執行的腳本程式碼
  • contextObject: Object, 指定將被上下文化的對象
  • filename: String, 指定腳本檔名

回傳結果:

  • Value, 返回運行結果

runInThisContext

在當前上下文內執行code 指定的程式碼並傳回結果

1 2
static Value vm.runInThisContext(String code, Object opts = {});

呼叫參數:

  • code: String, 指定要編譯和執行的腳本程式碼
  • opts: Object, 指定運行選項

回傳結果:

  • Value, 返回運行結果

在當前上下文內執行code 指定的程式碼並傳回結果

1 2
static Value vm.runInThisContext(String code, String filename);

呼叫參數:

  • code: String, 指定要編譯和執行的腳本程式碼
  • filename: String, 指定腳本檔名

回傳結果:

  • Value, 返回運行結果