Идеальное решение, которое сработало для меня, - использовать AST . так что я узнал об этом больше, поэтому я могу вставить строку с чем угодно, где захочу.
Затем я выполнил следующие шаги:
1- преобразовать строковый код в AST с помощью Esprima
парсера.
2- Внедрите защиту кода Infinite l oop, которая:
// Before any loop
let myvar = Date.now();
// Inside the loop
if (Date.now() - myvar > 1000) { break;}
используйте break
или выдайте ошибку, обратите внимание, что вам нужен генератор уникальных имен переменных каждый раз, когда вы catch al oop.
3- Преобразуйте его обратно в строку, используя escodegen
.