我正在编写一个简单的程序来发出reddit请求,然后以JSON格式返回页面。我通过将'.json'附加到reddit url的末尾来完成此操作。例如,如果我想获取我的个人资料的页面,我会做“www.reddit.com/user/stebon24.json”。
到目前为止,这是我的计划。我将记录并描述下面的错误。
var http = require('http');
var options = {
host: 'www.reddit.com',
path: ''
};
module.exports = function(username) {
console.log(username);
options.path = '/user/' + username + '.json';
var userData;
http.get(options, function(res) {
res.on('data', function(data) {
userData += data;
console.log(userData);
});
res.on('end', function() {
userData = JSON.parse(userData);
console.log(userData);
});
});
};
至于错误,它发生在程序到达需要运行JSON.parse()的程度时。我知道这是因为我可以看到它在我将结果记录在'data'事件时输出原始JSON。然后输出此错误......
undefined:1
undefined{"kind": "Listing", "data": {"modhash": "", "children": [{"kind": "t1
^
SyntaxError: Unexpected token u
at Object.parse (native)
at IncomingMessage.module.exports (/home/stephen/Desktop/karmacrawler/engine/crawlUser.js:23:20)
at IncomingMessage.EventEmitter.emit (events.js:126:20)
at IncomingMessage._emitEnd (http.js:366:10)
at HTTPParser.parserOnMessageComplete [as onMessageComplete] (http.js:149:23)
at Socket.socketOnData [as ondata] (http.js:1367:20)
at TCP.onread (net.js:403:27)
答案 0 :(得分:1)
请记住为userData
设置初始值,以便它不会初始化为“未定义”:
var userData = '';