【发布时间】:2021-01-07 08:54:28
【问题描述】:
我正在尝试在 node.js 中读取一个非常大的 gzipped csv 文件。到目前为止,我一直在使用 zlib:
file.createReadStream().pipe(zlib.createGunzip()
是我传递给 Papa.parse 的流。这对大多数文件都适用,但它会因一个非常大的 gzip CSV 文件(250 MB,解压缩到 1.2 GB)而失败,并抛出此错误:
Error: incorrect header check
at Zlib.zlibOnError [as onerror] (zlib.js:180:17) {
errno: -3,
code: 'Z_DATA_ERROR'
}
本来我以为是文件的大小导致了错误,但现在我不太确定了;可能是因为文件已使用不同的算法加密。 zlib.error: Error -3 while decompressing: incorrect header check 建议通过 -zlib.Z_MAX_WINDOWBITS 或 zlib.Z_MAX_WINDOWBITS|16 来纠正这个问题,但我试过了,这不是问题。
【问题讨论】:
-
在问题中以十六进制形式提供前 20 个字节左右,以便我们查看它是否真的是一个 gzip 流。
-
原来它确实不是 gzip 流。有一个同名的 json 文件包含关于我们的 gzip 文件的元数据,我们不小心没有指定扩展名。直到最近我们才获得了正确的文件,这纯属幸运,而直到最近几天我们才收到了 json 文件。只需指定扩展名即可解决问题。
标签: node.js gzip zlib node-streams