我正在尝试使用现代Node.js Streams将来自Twitter的Streaming API的数据传递给一个文件。我正在使用我编写的名为TweetPipe的库,该库利用EventStream和Request。
设定:
var TweetPipe = require('tweet-pipe')
, fs = require('fs');
var tp = new TweetPipe(myOAuthCreds);
var file = fs.createWriteStream('./tweets.json');
管道到STDOUT工作并且流保持打开状态:
tp.stream('statuses/filter', { track: ['bieber'] })
.pipe(tp.stringify())
.pipe(process.stdout);
管道到文件写一条推文,然后流静默地结束:
tp.stream('statuses/filter', { track: ['bieber'] })
.pipe(tp.stringify())
.pipe(file);
有人能告诉我为什么会这样吗?
答案 0 :(得分:0)
很难说你在这里有什么,听起来像是在你预期之前清理流。这可以通过多种方式触发,请参阅此处https://github.com/joyent/node/blob/master/lib/stream.js#L89-112
一个流可以发出'结束',然后就会停止。
虽然我怀疑这是问题,但有一件事让我感到担忧 https://github.com/peeinears/tweet-pipe/blob/master/index.js#L173-174 在发出错误之后,应该将称为。
我通常会通过添加日志记录来调试这样的问题,直到我看到没有发生的事情为止。
你能发布一个可以重现的脚本吗? (对于额外的点,包括指定依赖项的package.json:)
答案 1 :(得分:0)
根据this,您应该在由tp。
创建的流上创建一个错误处理程序