1

所以我有一个我正在尝试创建的 node.js 应用程序,其中一部分是访问 reddit 的 api 并从 url 获取 JSON,将其存储在 URL 中并发送它收集的内容。它完成了所有这些,但是在发送它找到的对象数组之后,应用程序崩溃并出现错误

    TypeError: Cannot read property 'children' of undefined

这对我来说没有意义,因为它已经找到了这些值并将它们用于输出。知道有什么问题吗?

var express = require("express"),
restler = require("restler");

var app = express.createServer();

app.all('/:subreddit', function(req, res){
    restler.get("http://www.reddit.com/r/"+ req.params.subreddit + ".json").on('complete', function(reddit){
    var reddit_data = reddit.data.children;
    var titles = new Array();
    var i = 0;
    while (i<5){

        titles[i] = i+": " + reddit_data[i].data.title;
        i++
    }
    res.send(titles);
});
});

app.listen(14042);
console.log("redSMS listening on 14042");
4

2 回答 2

2

问题是您接受每个请求并将其传递给 Reddit。

如果浏览器转到,比如说http://localhost/bmw,express 会将它传递给 reddit 并显示http://www.reddit.com/r/bmw.json. 到目前为止,一切都很好。

然后浏览器做它一直做的事情,将http://localhost/favicon.ico它传递给 Reddit as http://www.reddit.com/r/favicon.ico.json,给出 404 并且没有结果。当您尝试访问children该结果时,您会遇到崩溃。

于 2013-01-15T21:56:18.073 回答
1

对“完成”事件处理程序的回调传递了 2 个参数,而不是一个。第一个是“结果”,第二个是“响应”对象。

于 2013-01-15T21:36:27.017 回答