提问人:idk 提问时间:10/29/2023 更新时间:10/29/2023 访问量:74
未捕获错误:node.js 中 zlib 中的标头检查不正确 [重复]
Uncaught Error: incorrect header check in zlib in node.js [duplicate]
问:
我正在制作一个 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));
答:
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 ,至少有四个可安装的软件包可以做到这一点。您可以尝试简单地将其代码复制到您的应用程序中。
评论