Node.js 如何使用nodejs的unzip2获取zip文件的条目列表

Node.js 如何使用nodejs的unzip2获取zip文件的条目列表,node.js,zip,unzip,Node.js,Zip,Unzip,我正在使用unzip2模块进行zip文件流解压缩,但在获取zip条目时,我遇到了一个问题 我的代码如下: var fs = require('fs'); var entries = []; var srcStream = fs.createReadStream('test.zip'); srcStream.pipe(unzip.Parse()) .on('entry', function(entry) { entries.push(entry.path); entry.autodrain

我正在使用unzip2模块进行zip文件流解压缩,但在获取zip条目时,我遇到了一个问题

我的代码如下:

var fs = require('fs');
var entries = [];
var srcStream = fs.createReadStream('test.zip');
srcStream.pipe(unzip.Parse())
.on('entry', function(entry) {
  entries.push(entry.path);
  entry.autodrain();
})
.on('finish', function() {
  console.log(entries);
});
但是输出总是“[]”,似乎当得到“finish”事件时,“entry”事件的操作还没有完成

是否有任何解决方案可以获取所有条目列表?

使用“关闭”事件而不是“完成”可以解决此问题

var fs = require('fs');
var entries = [];
var srcStream = fs.createReadStream('test.zip');
srcStream.pipe(unzip.Parse())
.on('entry', function(entry) {
  entries.push(entry.path);
  entry.autodrain();
})
.on('close', function() {
  console.log(entries);
});

你的代码对我有用。请确保您的zip文件未损坏。@vinayr,您可以尝试一些包含许多小文件的zip文件,使用该代码,某些条目将丢失。使用“关闭”事件而不是“完成”可以处理某些文件,但其他一些zip文件可能不会触发关闭事件。不确定如果没有此帖子,我将如何解决此问题,因为文档非常稀少。除了代码之外,这个模块还有更好的信息来源吗?