随着节点的API / ZLIB越来越errno:-3,代码:'Z_DATA_ERROR'

示例数据可以在这里findallCountries.zip ,这是邮政编码数据库formsgeonames.org。

我正在运行这个代码,

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 

这是一个zip文件,而不是gzip或zlibstream。 (请参阅此答案 。)zlib不处理zip文件。 您需要查找或编写parsingzip文件格式的代码。