IMPORTANTE: si quieres ayudarme o tienes el mismo problema, discútelo aquí: https://github.com/vercel/pkg/discussions/1580
Estoy escribiendo una aplicación node.js que descarga repositorios de GitHub en tiempo de ejecución. Estos contienen archivos javascript que necesito en tiempo de ejecución. Pero ahora quiero empaquetar mi código en un ejecutable usando pkg , pero leí que no puedo simplemente requerir paquetes en tiempo de ejecución usando pkg. Entonces mi pregunta es: ¿Cómo puedo requerir estos archivos en tiempo de ejecución? Es importante para mí acceder a su función exportada, ya que necesito pasarle variables. Aquí hay un ejemplo de archivo descargado dinámicamente:
module.exports = function PluginServerSideRenderer (app, dir, config) { /* * * app is the express app * dir is the current-working-directory of the server or mostly the root * config is the config.json file as a javascript object * */ app.get('/__plugin-template__', (req, res) => { // Uncomment if user must be logged in to access this page // if (req.session.loggedin !== true) return res.redirect('/login') // Login Check res.send('Hello World from the Plugin-Template!') }) }
Normalmente usaría este código para importar estos archivos:
// Plugin Server Side Renderer const plugindirx = path.join(dir, '.tvt', 'plugins') const files = fs.readdirSync(plugindirx) const activeplugins = JSON.parse(fs.readFileSync(path.join(plugindirx, 'active.json'), 'utf8').toString()) for (const plugindiroutoffiles of files) { if (plugindiroutoffiles === 'active.json') continue if (!(activeplugins[genFileName(plugindiroutoffiles)])) continue const filesx = fs.readdirSync(path.join(plugindirx, plugindiroutoffiles)) const ssrfile = path.join(plugindirx, plugindiroutoffiles, filesx[0], 'serverside.js') require(ssrfile)(app, dir, config, Logger, IServConfig) } // End Plugin Server Side Renderer