我有以下代码,我正在管理gzip压缩的URL的请求.这工作很好,但是如果我尝试执行代码几次,我得到以下错误.任何建议如何解决这个问题?
谢谢!
http.get(url,function(req) { req.pipe(gunzip); gunzip.on('data',function (data) { decoder.decode(data); }); gunzip.on('end',function() { decoder.result(); }); });
错误:
stack: [ 'Error: write after end',' at writeAfterEnd (_stream_writable.js:125:12)',' at Gunzip.Writable.write (_stream_writable.js:170:5)',' at write (_stream_readable.js:547:24)',' at flow (_stream_readable.js:556:7)',' at _stream_readable.js:524:7',' at process._tickCallback (node.js:415:13)' ] }
解决方法
一旦可写流被关闭,它就不能接受任何数据(
see the documentation):这就是为什么在第一次执行你的代码将工作,而在第二个你将有写入结束错误.
只需为每个请求创建一个新的gunzip流:
http.get(url,function(req) { var gunzip = zlib.createGzip(); req.pipe(gunzip); gunzip.on('data',function() { decoder.result(); }); });