Как завершить любой код, который в настоящее время выполняется 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.