我之前在Node 5.0之前工作的函数是:
var gunzip = zlib.createGunzip();
var xml = new xmlStream(stream.pipe(gunzip));
xml.preserve('product>attributeClass');
xml.on('updateElement:merchandiser>product',self._createProduct.bind(self));
xml.on('end', function() {
console.log('xmlend');
self._processList();
});
xml.on('error',function(){
console.log('xmlerr');
});
它从FTP仓库中读取巨大的gz文件,我不想写任何东西到磁盘上并用流来处理所有内容。
现在,我了解修补后的zlib要求我进行更改以处理结束事件,否则就会冒着“意外的输入结束”的风险,这种情况现在是随机发生的。 (source on Node repo)。
但我不确定该怎么做。我试图强迫gunzip不发送它的'end'事件,但它只是拖延我的xmlStream。任何正确方向的指针都会受到赞赏!
编辑:在此期间,使用节点4.2.6修复它。仍然好奇如何更新。