Estoy planeando desarrollar un pequeño sitio de jueces en línea para fines de contratación, donde puedo crear concursos y los participantes pueden resolver y enviar sus soluciones.
Para eso, les proporcionaré un editor de códigos en línea, donde escriben sus códigos y los envían. Después del envío, el código fuente se enviará a un servidor de nodo mediante una solicitud POST y el código fuente se enviará como una cadena.
Ahora el problema es cómo compilar y ejecutar el código javascript desde una cadena y obtener el resultado.
function runCode(code) { let input = 5; const wrap = source => `{ return ${source} };`; const fn = new Function(wrap(code)); const output = fn.call(null).call(null, input); // The output is n * n = 5 * 5 = 25 console.log(output); } runCode(`function myFunction(n) { return n * n; }`); El código funciona perfectamente, pero no entiendo, ¿es esta una buena manera de implementar el escenario? ¿Hay alguna otra forma mejor y segura? Escuché sobre el paquete vm del node .