我正在尝试使用twitter api和node / express获取最新的5条推文,但是当我用.get
调用网址时,我没有得到任何结果当我调用url
时,我希望它返回一个json对象这是我的电话代码,受到我在其他地方找到的答案以及答案Get the list of latest tweets using node.js and twitterAPI
var ntwitter = require('ntwitter'),
credentials = require('./credentials.json'),
twitter,
tweets = {};
// set up our twitter objects
twitter = ntwitter(credentials);
tweets = twitter.get('/statuses/user_timeline.json', { screen_name: 'twitter', count: 5});
module.exports = tweets;
目前,当我启动服务器时,我收到此错误
throw new Error('FAIL: INVALID CALLBACK.');
^
Error: FAIL: INVALID CALLBACK.
at Twitter.get (/home/vagrant/app/node_modules/ntwitter/lib/twitter.js:56:11)
at Object.<anonymous> (/home/vagrant/app/twitter_stream.js:10:18)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous> (/home/vagrant/app/server.js:7:19)
at Module._compile (module.js:456:26)
我的server.js文件,我需要twitter_stream.js文件
var express = require("express"),
path = require("path"),
http = require("http"),
bodyParser = require("body-parser"),
tweets = require("./twitter_stream.js"),
app = express();
// Set the client folder as the default folder
app.use(express.static(__dirname + "/client"));
// Parse incomming json objects with bodyparser
app.use(bodyParser());
// Create the server
http.createServer(app).listen(3000);
// set up routes
app.get("/tweets.json", function (req, res) {
// res.json returns the entire object as a JSON file
res.json(tweets);
});
就像一个额外的信息:我正在从一个流浪的64位框运行节点
Haven能够找到很多关于此的信息,所以我可能会完全错误地处理这个问题。
答案 0 :(得分:1)
node.js是异步的。这意味着功能不会返回值。
//nope, asynchronous calls don't just return values.
tweets = twitter.get('/statuses/user_timeline.json', { screen_name: 'twitter', count: 5});
使用回调:
twitter.get(
'/statuses/user_timeline.json',
{ screen_name: 'twitter', count: 5}
function(error, tweets) {
//Looks, tweets are in here!
//this function is called a "callback"
}
);
另外,你不能这样做:
module.exports = tweets;
将功能放在模块中,而不是从Internet加载数据。使用函数将该数据公开给应用程序的其余部分。