Node.js vm2 使用函数在 VM 和主代码之间交换信息

Node.js vm2 exchanging information between VM and main code using functions

我正在使用 vm2 模块,我有一些代码有两个功能:get_input() 用于获取我拥有的一些数据,display() 用于显示一些数据,但是这些函数不会在该代码中定义。我如何制作某种外部函数,它可以 运行 get_input() 从数组中提供数据并使用 display() 函数将一些数据输出到我的主代码?基本上我想这样做:

如有任何帮助,我们将不胜感激。

您传递给 vm2 构造函数的 sandbox 选项表示沙盒实例中的 "global" 对象。您也可以传递函数:

const { VM } = require('vm2');

const sandbox = {
  get_input(data) {
    return 'input:' + data;
  },
  display(data) {
    console.log('Data:', data);
  }
}

const vm = new VM({ sandbox });

vm.run(`

const array = [ 'foo', 'bar', 'blah' ];

const ret = get_input(array[1]);

display(ret);

`);

(输出:Data: input:bar