我在用着pngjs https://github.com/niegowski/node-pngjs读取和写入一些 PNG。我定期收到此错误:
Error: There are some read requests waiting on finished stream
at ChunkStream._end (/home/mbayazit/qatools/pdiff/node_modules/pngjs/lib/chunkstream.js:107:13)
at ChunkStream.end (/home/mbayazit/qatools/pdiff/node_modules/pngjs/lib/chunkstream.js:94:14)
at PNG.end (/home/mbayazit/qatools/pdiff/node_modules/pngjs/lib/png.js:105:18)
at ReadStream.onend (_stream_readable.js:483:10)
at ReadStream.g (events.js:175:14)
at ReadStream.EventEmitter.emit (events.js:117:20)
at _stream_readable.js:910:16
at process._tickCallback (node.js:415:13)
但它没有给我程序内的行号。
不过,我只处理几个地方的流,它们是:
fs.createReadStream(oldScreen).pipe(new PNG).on('parsed', function() {
promises[0].resolve(this);
});
fs.createReadStream(newScreen).pipe(new PNG).on('parsed', function() {
promises[1].resolve(this);
});
And
result.png.pack().pipe(fs.createWriteStream(diffName));
这三个文件名永远不会相同,因此它们不应该读/写到同一个位置。我认为流可能没有从之前失败的运行中正确关闭。有没有办法可以强制所有流很好地关闭?
两个建议:
Use longjohn https://github.com/mattinsler/longjohn,它可能能够在代码中提供行号。 (异常发生在异步块中,因此您的堆栈跟踪不包含您的程序,它仅与 V8 主循环中的刻度处理程序堆栈)。
问题似乎在于有人试图read来自刚刚“结束”的流(已关闭,或已到达其末尾并且底层发出“结束”信号)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)