Как завершить любой код, который в настоящее время выполняется Node VM2

Я запускаю какой-то песочничный код в Node, используя vm2.

Запускаемый код будет в основном асинхронным. Это ненадежный код, и на него нельзя положиться, чтобы соответствовать как-либо - следовательно, поэтому я использую vm2 запустить его.

Есть ли у vm2 способ завершить какой-либо код, выполняемый в настоящее время? Документация очень ограничена. Например, если бы у меня был этот код:

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

Есть ли способ, которым я мог бы выполнить такое выше, и остановить его в какой-то момент в будущем, без управляющего кода, который должен знать что-либо о содержании codeи без code необходимость предоставить какие-либо конкретные функции?

Я не могу найти vm.stop() метод или аналогичный.

1 ответ

Решение

К сожалению, нет способа прервать выполнение кода, работающего на виртуальной машине. Библиотека vm2 основана на модуле VM Node, который не предоставляет никакого метода для прерывания кода, выполняемого в песочнице. По крайней мере, на момент написания этого.

Единственное, что вы можете ограничить - это продолжительность любого синхронного выполнения.

Отказ от ответственности: я автор библиотеки vm2.

Другие вопросы по тегам