Этот код игнорирует таймаут и зависает процесс:
'use strict'
const {VM} = require('vm2')
const vm = new VM({
timeout: 5000,
})
console.log('Runs')
vm.run('Promise.resolve(42).then(() => {while(true) {}})') // hangs the process
setImmediate(console.log, 'Will never run')
И Обещание не может быть легко отключено: #74.
Readme.md
ВАЖНО: Timeout не эффективен для NodeVM, поэтому он не защищен от while (true) {} или подобного зла.
@awiebe , за исключением того, что я использую VM
, а не NodeVM
.
К сожалению, это еще одно ограничение функции тайм-аута узла — она не работает для асинхронных вызовов, даже если они выполняются в песочнице.
Эта проблема была автоматически помечена как устаревшая, поскольку в последнее время в ней не было активности. Он будет закрыт, если никакой дальнейшей активности не произойдет. Спасибо за ваш вклад.