node.js - 等待完成流的读取请求

标签 node.js stream

我正在使用 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);
});

result.png.pack().pipe(fs.createWriteStream(diffName));

这三个文件名永远不会相同,所以它们不应该在同一个地方读/写。我想有可能流没有从之前失败的运行中正确关闭。有没有一种方法可以强制所有流正常关闭?

最佳答案

两个建议:

  1. 使用 longjohn ,它可能能够在您的代码中提供行号。 (异常发生在异步 block 中,因此您的堆栈跟踪不包含您的程序,它仅与 V8 主循环中的滴答处理程序堆栈在一起)。

  2. 问题似乎是有人正试图从刚刚“结束”(已关闭,或已到达其末尾且底层发出“结束”信号)的流中读取 ").

关于node.js - 等待完成流的读取请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18748023/

相关文章:

node.js - 如何获取子文档字段的不同值及其在mongodb集合中的计数?

javascript - 无法要求发布模块

javascript - 如何将两个单独的查询传递给 promise 链末尾的回调函数?

node.js - NodeJS - 默认情况下,http 请求和响应是否在 NodeJS 世界之外流?

python - 标记复杂输入

带有发布数据的 php file_get_contents

javascript - Js 在其中添加 map 迭代

javascript - 提交不发布所有数据

c# - Stream 对象的 ReadAllLines?

java - 如何使用 Hibernate 将数据流式传输到数据库 BLOB(字节 [] 中没有内存存储)