2016-12-06 3 views
2

Я использую модуль unzip node для распаковки моего binary-data (из модуля request). не удается в некоторых случаях, когда request модуль response не содержит ZIP-папку binary data (если в ответе нет данных в папке с zip-файлом, некоторые другие двоичные данные).ошибка недопустимой сигнатуры при распаковке папки в nodejs

Как я справляюсь с этим исключением.

const request = require("request"); 
const unzip = require('unzip'); 
const stream = require('stream'); 

var options = { 
     method: 'GET', 
     url: /*URL*/, 
     encoding: null 
    }; 

    request(options, function (error, response, body) { 
     zipExtract(error, body); 
    }); 

zipExtract:

function zipExtract(error, zipData) { 
    if (error) { 
     console.error(error); 
    } 
    else { 
     try { 
      //create stream object 
      var artifactStream = new stream.PassThrough(); 

      //parse buffer into stream 
      artifactStream.end(zipData); 

      //pipe response to unzip 
      artifactStream.pipe(unzip.Extract({path: 'app/output'})); 
     } 

     catch (exception) { 
      console.error(exception); 
     } 
    } 
} 

это подсказка об ошибке на консоли

events.js:160 
     throw er; // Unhandled 'error' event 
    ^

Error: invalid signature: 0x6d74683c 
    at C:\app-hub\module-application-size\node_modules\unzip\lib\parse.js:63:13 
    at runCallback (timers.js:637:20) 
    at tryOnImmediate (timers.js:610:5) 
    at processImmediate [as _immediateCallback] (timers.js:582:5) 
npm ERR! Test failed. See above for more details. 

ответ

0

использование адм-почтовый модуль для рукоятки исключения.

const admzip = require('adm-zip'); 

try { 
    var zip = new admzip(zipData); 
    zip.extractAllTo(/*path*/); 

} 
catch (exception) { 
    console.error(exception); 
}