Node.js vm2 使用函数在 VM 和主代码之间交换信息
Node.js vm2 exchanging information between VM and main code using functions
我正在使用 vm2
模块,我有一些代码有两个功能:get_input()
用于获取我拥有的一些数据,display()
用于显示一些数据,但是这些函数不会在该代码中定义。我如何制作某种外部函数,它可以 运行 get_input()
从数组中提供数据并使用 display()
函数将一些数据输出到我的主代码?基本上我想这样做:
- vm2 中的代码 运行ning 进行
get_input()
调用
- 数组中的数据被发送到该函数
- 使用 vm2 实例中的代码评估数据
- vm2 代码进行
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
)
我正在使用 vm2
模块,我有一些代码有两个功能:get_input()
用于获取我拥有的一些数据,display()
用于显示一些数据,但是这些函数不会在该代码中定义。我如何制作某种外部函数,它可以 运行 get_input()
从数组中提供数据并使用 display()
函数将一些数据输出到我的主代码?基本上我想这样做:
- vm2 中的代码 运行ning 进行
get_input()
调用 - 数组中的数据被发送到该函数
- 使用 vm2 实例中的代码评估数据
- vm2 代码进行
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
)