我正在努力学习和理解nodejs。在尝试连接到Twitter流的api并跟踪推文时,我收到以下错误:
undefined:1
<html>\n<head>\n<meta http-equiv="Content-Type" content="text/html; charset=ut
^
SyntaxError: Unexpected token <
at Object.parse (native)
at IncomingMessage.<anonymous> (/home/ytsejam/public_html/nodejs/11/twitter.js:15:20)
at IncomingMessage.emit (events.js:95:17)
at IncomingMessage.<anonymous> (_stream_readable.js:764:14)
at IncomingMessage.emit (events.js:92:17)
at emitReadable_ (_stream_readable.js:426:10)
at emitReadable (_stream_readable.js:422:5)
at readableAddChunk (_stream_readable.js:165:9)
at IncomingMessage.Readable.push (_stream_readable.js:127:10)
at HTTPParser.parserOnBody [as onBody] (http.js:142:22)
这是我尝试连接的代码:
var https = require("https");
var options = {
host: 'stream.twitter.com',
path: '/1.1/statuses/filter.json?track=bieber',
method: 'GET',
headers: {
"Authorization": "Basic " + new Buffer("username:password").toString("base64")
}
};
var request = https.request('https://stream.twitter.com/1.1/statuses/filter.json?track=query', function(response){
var body = '';
response.on("data", function(chunk){
var chunk = chunk.toString();
try {
var tweet = JSON.parse(chunk);
} catch (err) {
console.log("JSON parse error:" + err);
}
console.log(tweet.text);
});
response.on("end",function(){
console.log("Disconnected");
});
});
request.end();
我做了一项研究并试图调试。我最好的猜测是var tweet = JSON.parse(chunk);
可能会导致问题。第二个选项,我缺少oauth参数。
编辑:
我在这里使用答案Node.js and Twitter API 1.1
解决了这个问题答案 0 :(得分:1)
JSON.parse()
正在抛出SyntaxError
,因为它尝试解析的数据是HTML而不是JSON。
一般情况下,将JSON.parse()
包裹在try
/ catch
块中是一个好主意,这样您就可以优雅地处理这些事情。
(你的oauth可能存在问题并且无法进行身份验证。因此,您将获得一个HTML页面,告诉您身份验证失败。但这只是猜测。)