如何结束节点 VM2 当前正在 运行 的任何代码

How to end any code currently being run by Node VM2

我正在 运行使用 vm2 在 Node 中安装一些沙盒代码。

运行 中的代码大部分是异步的。它是不受信任的代码,不能依赖它以任何方式符合 - 因此我使用 vm2 到 运行 它的原因。

vm2 是否有办法结束当前正在执行的任何代码?文档非常有限。例如,如果我有这个代码:

var code = 'setInterval(function(){ console.log("tick"); }, 1000);'
vm.run(code);

有没有什么办法可以 运行 像上面那样,并在将来的某个时候停止它,而控制代码不必知道 code 的内容,并且不需要code 必须提供任何特定功能?

我找不到 vm.stop() 方法或类似方法。

遗憾的是,无法中断 VM 中代码 运行 的执行。 vm2 库基于 Node 的 VM 模块,它不提供任何方法来中断沙箱中的代码 运行。至少在写这篇文章的时候不是。

您唯一可以限制的是任何同步执行的持续时间。

免责声明:我是 vm2 库的作者。