我使用以下代码:
yauzl.open(filePath, function (err, zipFile) {
zipFile.on('entry', (entry) =>{
//console.log(entry.fileName);
if (/\/$/.test(entry.fileName)) {
return;
}
zipFile.openReadStream(entry, (err, readStream) => {
if (err) {
logger.info(err);
reject(err);
} else {
...
现在我想通过执行以下操作来更改代码以使其更具可读性:
yauzl.open(filePath, (err, zipFile) => {
//zipFile = zipFile;
if (err) {
__rejectAndLog(err);
return;
}
zipFile.on('entry', __processEntry(zipFile))
.once('error', __rejectAndLog)
.once('close', () => {
console.log(`Unpacked ${numOfFiles} files`);
resolve();
});
});
这是processEntry:
function __processEntry(zipFile) {
zipFile.openReadStream(entry, (err, readStream) => {
if (err) {
__rejectAndLog(err);
return;
}
if (/\/$/.test(entry.fileName)) {
// directory file names end with '/'
return;
}
我收到错误cannot use **openReadStream** of undefined
。我怎么处理呢?
zipFile.openReadStream(entry, (err, readStream) => {
此外,我还需要传递条目value
的任何想法吗?
答案 0 :(得分:0)
使用bind zipFile.on('entry', __processEntry.bind(null, zipFile))
并将__processEntry重新声明为function __processEntry(zipFile, entry)