Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

294
Views
Intentando clonar un repositorio y enviarlo a la interfaz con Node & Express

Estoy tratando de servir un repositorio clonado dado usando NodeJS y ExpressJS. Pude clonarlo localmente, pero no puedo enviarlo a la interfaz. Este es mi código:

 const express = require("express"); const app = express(); const port = 3000; const path = require("path"); const { execSync } = require("child_process"); // function to download the repo const downloadRepo = (repoURL) => execSync(`git clone ${repoURL}`, { stdio: [0, 1, 2], cwd: path.resolve(__dirname, ""), }); // route to clone the repo app.get("/:repoOwner/:repoName", async (req, res) => { const { repoOwner, repoName } = req.params; // composing the repo URL to be downloaded const fullRepoURL = `https://github.com/${repoOwner}/${repoName}.git`; // downloading the repo in the root folder await downloadRepo(fullRepoURL); // returns the FULL URL of the repo in the frontend res.send(fullRepoURL); // trying to return the repo's content in the the frontend // I get status 304 (not modified) res.sendFile(path.resolve(__dirname, repoName)); }); app.listen(port, () => { console.log(`App listening at http://localhost:${port}`); });
about 4 years ago · Santiago Gelvez
1 answers
Answer question

0

No es una respuesta directa, sino un par de comentarios y sugerencias:

  1. Un repositorio de Git no es un solo archivo, por lo que sendFile no funcionará.

  2. Su código ejecuta send y sendFile en un controlador. Esto no funcionará porque solo puede enviar una sola respuesta por solicitud.

  3. Un clon de Git es una operación de ejecución prolongada (de varios segundos a minutos o incluso horas) que no debe ejecutarse dentro de un controlador de solicitudes. Con la versión actual, incluso bloquearía más solicitudes debido a execSync .

  4. Si desea "devolver" el repositorio, puede comprimirlo y enviar el repositorio completo en un solo archivo ZIP (sin embargo, esta es una funcionalidad que cubre GitHub, por lo que este código ni siquiera sería necesario).

Sugerencias adicionales basadas en la información proporcionada:

  1. Tenga un punto final de "repositorio de clones" que inicie la clonación dentro de un trabajo en segundo plano (eche un vistazo, por ejemplo, a la agenda o herramientas de programación de trabajos similares para Node) y que escriba el resultado en un archivo ZIP.

  2. Tenga otro punto final donde pueda verificar continuamente el estado o el progreso de la clonación, y que finalmente devuelva una URL de descarga (es decir, el archivo ZIP producido que puede servir con el middleware express.static ).

  3. Como alternativa, no comprima los datos en formato ZIP, sino sirva el clon a través del sistema de archivos (también, por ejemplo, utilizando express.static ).

about 4 years ago · Santiago Gelvez Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!