En nuestro proyecto tenemos el objeto de console personalizado que se usa como registrador.
Entonces necesitamos reemplazar la console predeterminada.
Para este propósito decidimos usar el módulo vm .
Pero nos enfrentamos al problema al usar importaciones dentro del código creado con vm.Script :
aplicación.js :
import path from 'path'; console.log(path.resolve('./apps'));principal.js :
const context = { console, global: {}, module: {}, exports: {}, require, }; context.global = global; const sandbox = vm.createContext(context); const fileName = './application.js'; const src = await fsp.readFile(fileName, 'utf8'); const script = new vm.Script(`module.exports = () => {\n${src}\n};`); const execute = script.runInNewContext(sandbox); execute(); Producción:
Error: no se puede encontrar la 'ruta' del módulo
Pregunta :
¿Cómo hacer que las importaciones funcionen correctamente dentro del archivo application.js ?
No utilice un new vm.Script si desea crear un módulo. ¡Use un new vm.Module en su lugar! Sin embargo, tenga en cuenta que la API aún es experimental.