2016-10-10 55 views
1

示例數據可以是found here allCountries.zip,這是郵政編碼數據庫表單geonames.org。使用node的api/zlib我得到errno:-3,代碼:'Z_DATA_ERROR'

我運行此代碼,

const zlib = require('zlib'); 
const fs = require('fs'); 
const zip = fs.readFileSync('/tmp/allCountries.zip'); 

zlib.gunzip(zip, unzipData => console.log(unzipData)); 

我得到這個錯誤,

{ Error: incorrect header check 
    at Zlib._handle.onerror (zlib.js:356:17) errno: -3, code: 'Z_DATA_ERROR' } 

我也試過zlib.unzip返回相同的錯誤,並zlib.unzipSync這樣,

zlib.unzip(zip, unzipData => console.log(unzipData)); 

它返回這個堆棧轉儲,

zlib.js:536 
     throw error; 
    ^

Error: incorrect header check 
    at Zlib._handle.onerror (zlib.js:356:17) 
    at Unzip.Zlib._processChunk (zlib.js:526:30) 
    at Object.<anonymous> (/tmp/test.js:6:6) 
    at Module._compile (module.js:574:32) 
    at Object.Module._extensions..js (module.js:583:10) 
    at Module.load (module.js:491:32) 
    at tryModuleLoad (module.js:450:12) 
    at Function.Module._load (module.js:442:3) 
    at Module.runMain (module.js:608:10) 
    at run (bootstrap_node.js:382:7) 

我使用的是v7.0.0-test2016100609987d242b,但我已經證實這與v6.7.0的結果是一樣的。該檔案可以用gunzip -cunzip正確提取。

$ unzip -v ./allCountries.zip 
Archive: ./allCountries.zip 
Length Method Size Cmpr Date Time CRC-32 Name 
-------- ------ ------- ---- ---------- ----- -------- ---- 
96309121 Defl:N 12668483 87% 2016-10-10 03:05 0666ed3f allCountries.txt 
--------   ------- ---       ------- 
96309121   12668483 87%       1 file 

回答

1

這是一個zip文件,而不是gzip或zlib流。 (請參閱this answer。)zlib不處理zip文件。您需要find或編寫解析zip文件格式的代碼。

相關問題