Digamos que estamos creando un módulo llamado app mediante la construcción de un nuevo objeto vm.SourceTextModule :
const context = { exports: {}, console, // custom console object }; const sandbox = vm.createContext(context); const app = new vm.SourceTextModule( `import path from 'path'; console.log(path.resolve('./src'));`, { context: sandbox, } ); De acuerdo con la documentación de Node.js para obtener la exportación predeterminada del módulo de path , debemos "vincular" las dependencias importadas del módulo de la app .
Para lograr esto, debemos pasar la devolución de llamada del linker al método app.link :
async function linker(specifier, referencingModule) { // the desired logic... } await app.link(linker); Cómo implementar correctamente la función del linker para que podamos importar el módulo de path en el módulo de app recién creado y usarlo:
await app.evaluate(); // => /home/user/Documents/project/src PD Estamos usando TypeScript , así que verifiqué si tenemos tipos instalados para el paquete de path .
paquete.json :
"@types/node": "^17.0.31",