因此,我想做的就是将javascript代码作为用户的输入,然后将结果返回给他。现在,我仅使用eval(并进行了一些安全检查)来执行用户提交的代码。但是我知道这是非常不可靠的。因此,我想要实现的是在沙盒环境中安全运行此程序并将结果返回给用户。例如
输入:
var a =[1,2,3];
a.map(n => n*2);
输出:
[2,4,6]
我尝试在节点中使用vm,但我不太了解如何从中获取最终结果。
我尝试在节点中使用vm,但我不太了解如何从中获取最终结果。
像一样,许多vm
模块函数vm.runInNewContext()
都将返回字符串中最后一个语句的结果,类似于eval()
。
var vm = require('vm');
var script = 'var a = [1, 2, 3]; a.map(n => n * 2);';
var sandbox = {};
var result = vm.runInNewContext(script, sandbox);
console.log(sandbox); // { a: [1, 2, 3] }
console.log(result); // [2, 4, 6]
在以下说明中给出了捕获结果的示例 vm.runInThisContext()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句