Node.js twitterstreamapi

我正在学习使用nettutplus介绍系列的node.js。 在这个系列中,有一个教训是使用twitter stream api来创buildnode.js应用程序,video中显示的代码和我写的代码完全一样,但是它不起作用。

这是我的代码

var https = require("https"); var options = { host: 'stream.twitter.com', path: '/1/statuses/filter.json?track=bieber', method: 'GET', headers: { "Authorization": "Basic " + new Buffer("username:password").toString("base64") } }; var request = https.request(options, function(response){ var body = ''; response.on("data", function(chunk){ var tweet = JSON.parse(chunk); console.log("Tweet: "+ tweet.text); }); response.on("end", function(){ console.log("Disconnected"); }); }); request.end(); 

错误是得到这是

未定义:1

^

SyntaxError:意外的标记<

 at Object.parse (native) at IncomingMessage.<anonymous> (C:\Users\monk\Desktop\folder\node\twitter.js:14:20) at IncomingMessage.EventEmitter.emit (events.js:95:17) at IncomingMessage.<anonymous> (_stream_readable.js:736:14) at IncomingMessage.EventEmitter.emit (events.js:92:17) at emitReadable_ (_stream_readable.js:408:10) at emitReadable (_stream_readable.js:404:5) at readableAddChunk (_stream_readable.js:165:9) at IncomingMessage.Readable.push (_stream_readable.js:127:10) at HTTPParser.parserOnBody [as onBody] (http.js:141:22) 

我正在使用Windows和CMD。

您使用的代码是旧的Twitter的API第1版。Twitter最近推出了新版本的API 1.1,并停止旧版本。 新的Twitter API要求您validation每个请求,并且您可以在Twitter开发人员网站上阅读authentication机制中的一些更改。 至于脚本中的上述错误,这是因为你正在试图parsingJSON.parse(chunk); 其中块是HTML,你正在得到这些错误。 尝试更新您的代码的最新版本的Twitter API。 谢谢

您正试图parsing来自请求的一小部分响应,这可能不是有效的JSON。 完整的响应是一个有效的JSON。

它不断的streamJSON,由endlines划界。 而你必须处理这些。 您必须等待endlines然后parsing收到的数据。 在这里看到一个实现