未捕获错误:node.js 中 zlib 中的标头检查不正确 [重复]

Uncaught Error: incorrect header check in zlib in node.js [duplicate]

提问人:idk 提问时间:10/29/2023 更新时间:10/29/2023 访问量:74

问:

我正在制作一个 Electron 应用程序,它使用 fetch 和 fs 下载一个 zip 文件,然后使用 zlib 将其提取到文件夹中。但是,我一直收到此错误:

Uncaught Error: incorrect header check at __node_internal_genericNodeError (node:internal/errors:867:15) at Zlib.zlibOnError [as onerror] (node:zlib:189:17)

在查找了一个小时,甚至试图让 AI 找到答案后,我不断得到的回复是 zip 文件必须已损坏。但是,在检查了原始 zip 文件和下载的文件后,两者都没有损坏。怎么了?这是我的脚本,如果有帮助的话:

if(!fs.existsSync(destinationFolder)){
  fs.mkdirSync(destinationFolder);
}
fs.createReadStream(zipFileLocation).pipe(zlib.createUnzip()).pipe(fs.createWriteStream(destinationFolder));
javascript node.js 电子 zip zlib

评论


答:

1赞 Mark Adler 10/29/2023 #1

与 zlib 关联的“解压缩”对象命名不当。它将解压缩 zlib 或放气流。如果您实际上是一个 zip 文件,那么 zlib 无法自行从中提取任何内容。您需要解码 zip 文件结构,然后仅将 deflate 压缩数据提供给 zlib。

快速的谷歌搜索发现 adm-zip 可以处理 zip 文件。

评论

0赞 idk 10/30/2023
有没有不需要 npm install 命令的 adm-zip 的替代方案,我可以只使用 require() 来安装它?
0赞 Mark Adler 10/30/2023
正如我在回答中所说,您必须编写自己的代码来破译 zip 文件结构,然后使用 zlib 解压缩 deflate 数据。您可以在此处找到 zip 文件规范:pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT
0赞 Mark Adler 10/30/2023
如图所示: blog.logrocket.com/best-methods-unzipping-files-node-js ,至少有四个可安装的软件包可以做到这一点。您可以尝试简单地将其代码复制到您的应用程序中。