nodejs抛出呃; //未处理“错误”事件

我做了下面,用node.js来玩一下。 zipfiles文件夹中的文件被相应的压缩,所有的东西似乎都能正常工作。 但是我在cmd上遇到了一个错误,我不知道它来自哪里或者如何解决。

events.js:72 throw er; // Unhandled 'error' event ^ Error: write after end at writeAfterEnd (_stream_writable.js:130:12) at Gzip.Writable.write (_stream_writable.js:178:5) at write (_stream_readable.js:583:24) at flow (_stream_readable.js:592:7) at ReadStream.pipeOnReadable (_stream_readable.js:624:5) at ReadStream.EventEmitter.emit (events.js:92:17) at emitReadable_ (_stream_readable.js:408:10) at emitReadable (_stream_readable.js:404:5) at readableAddChunk (_stream_readable.js:165:9) at ReadStream.Readable.push (_stream_readable.js:127:10) 

这是我的脚本:

 var zlib = require('zlib'); var gzip = zlib.createGzip(); var fs = require('fs'); var zip = { zipAll: function(dir){ //files to zip fs.readdir(dir, function(err, data){ if(err) throw(err); var arrayValue = data.toString().split(','); //files with .gz at the end, needs to be excluded for(var i=0; i<arrayValue.length; i+=1){ console.log("Zipping following files: " + arrayValue[i]); var input = fs.createReadStream('zipfiles/' + arrayValue[i]); var output = fs.createWriteStream('zipfiles/input'+[i]+'.txt'+'.gz'); input.pipe(gzip).pipe(output); } }); } }; zip.zipAll('zipfiles'); 

谢谢

Gzip对象有点怪(afaik无证)重复使用多个文件。 解决你的问题最简单的方法是简单地使用每个文件单独的gzip对象进行压缩,如:

 for(var i=0; i<arrayValue.length; i+=1){ console.log("Zipping following files: " + arrayValue[i]); var input = fs.createReadStream('zipfiles/' + arrayValue[i]); var output = fs.createWriteStream('zipfiles/input'+[i]+'.txt'+'.gz'); input.pipe(zlib.createGzip()).pipe(output); }