• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

270
Vistas
Descargue el archivo del repositorio de GitLab usando la API de GitLab y Node.js

Me gustaría descargar (no clonar) el archivo de mi repositorio de GitLab, pero aparece este error

verificación de encabezado incorrecta (Zlib._handle.onerror)

Esta es mi función:

 var fs = require('fs'); var url = require('url'); var https = require('https'); var path = require('path'); var targz = require('tar.gz'); function downloadFile(source, destination, name) { var options = { host: url.parse(source).host, port: 443, path: url.parse(source).pathname }; var file = fs.createWriteStream(destination + path.sep + name); https.get(options, function(res) { res.on('data', function(data) { file.write(data); }).on('end', function() { file.end(); console.log('File ' + name + ' downloaded to ' + destination); targz().extract(destination + '/' + name, destination) .then(function(){ console.log('Job done!'); }) .catch(function(err){ console.log('Something is wrong ', err.stack); }); }); }); }

El archivo que se descarga es del tipo tar.gz. Intento establecer algunos encabezados pero no tengo éxito. El parámetro de origen es como: https://gitlab.com/api/v3/projects/:ID/repository/archive?token=XXYYZZ

¿Alguna ayuda por favor?

about 3 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

El problema es que el módulo https no descarga correctamente su archivo, lo que da como resultado un error de extracción del módulo tar.gz

Puede usar el módulo de request coordinado con tar.gz con createWriteStream para canalizar la extracción directamente a la carpeta de destino:

 var request = require('request'); var targz = require('tar.gz'); function downloadFile(source, destination, cb) { var read = request.get(source); var write = targz().createWriteStream(destination); read.pipe(write); write.on('finish', function() { cb(null); }); write.on('error', function(err) { cb(err); }); } var source = "https://gitlab.com/api/v3/projects/:ID/repository/archive?token=XXYYZZ"; var destination = "/home/user/some/dir"; downloadFile(source, destination, function(err) { if (err) { console.log('Something is wrong ', err.stack); } else { console.log('Job done!'); } });

Tenga en cuenta que, para enviar el evento de finish , necesitará la versión 1.0.2 de tar.gz (consulte este problema ):

 npm install tar.gz@1.0.2
about 3 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda