我正在使用vm2
模块,并且我有一些带有两个功能的代码:get_input()
用于获取我拥有的一些数据,display()
用于显示一些数据,但是这些功能不会在该代码中定义。如何制作某种外部函数来运行get_input()
来从数组中提供数据,并使用display()
函数将一些数据输出到我的主代码中?基本上我想这样做:
get_input()
调用display()
调用,该数据将数据输出到我的主代码上的另一个数组任何帮助将不胜感激。
答案 0 :(得分:1)
您传递到sandbox
构造函数中的vm2
选项表示沙箱实例内部的“全局”对象。您也可以传递函数:
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
)