【发布时间】:2018-10-09 09:40:03
【问题描述】:
下面是运行 app.js 时的输出。当一切正常时,这开始完全随机发生。完全没有任何改变。
TypeError: Cannot read property 'message' of undefined
at /home/ec2-user/environment/rt-bot/app.js:78:48
at Request._callback (/home/ec2-user/environment/node_modules/twitter/lib/twitter.js:220:14)
at Request.self.callback (/home/ec2-user/environment/node_modules/request/request.js:186:22)
at emitTwo (events.js:106:13)
at Request.emit (events.js:191:7)
at Request.<anonymous> (/home/ec2-user/environment/node_modules/request/request.js:1163:10)
at emitOne (events.js:96:13)
at Request.emit (events.js:188:7)
at IncomingMessage.<anonymous> (/home/ec2-user/environment/node_modules/request/request.js:1085:12)
at IncomingMessage.g (events.js:292:16)
我尝试从我的主分支创建新实例(自上次工作以来没有提交),甚至仍然收到此错误。有什么想法吗?
导致错误的代码,尽管此代码以前可以工作。
T.get('search/tweets', query, function(err, data, response) {
// continue if no errors
if(!err){
// loop
for(let i = 0; i < data.statuses.length; i++){
// get latest tweet ID
let id = { id: data.statuses[i].id_str }
// try favorite
T.post('favorites/create', id, function(err, response){
// log failures
if(err){
console.log('Try Favorite - ', err[0].message);
}
// log success
else{
let username = response.user.screen_name;
let tweetId = response.id_str;
console.log('Favorited: ', `https://twitter.com/${username}/status/${tweetId}`)
}
});
第一次出现的图片。如您所见,一切正常,然后这个错误突然出现,环境或代码库完全没有变化。
更新:
使用console.log('Try Favorite - ', err.message); 而不是console.log('Try Favorite - ', err[0].message); 记录错误时的输出
[[Apr 28 21:27:00.702]] [LOG] Try Favorite - HTTP Error: 429 Too Many Requests
[[Apr 28 21:27:00.705]] [LOG] Try Favorite - HTTP Error: 429 Too Many Requests
[[Apr 28 21:27:00.706]] [LOG] Try Favorite - HTTP Error: 429 Too Many Requests
[[Apr 28 21:27:00.707]] [LOG] Try Favorite - HTTP Error: 429 Too Many Requests
[[Apr 28 21:27:00.708]] [LOG] Try Favorite - HTTP Error: 429 Too Many Requests
[[Apr 28 21:27:00.709]] [LOG] Try Favorite - HTTP Error: 429 Too Many Requests
[[Apr 28 21:27:00.712]] [LOG] Try Favorite - HTTP Error: 429 Too Many Requests
[[Apr 28 21:27:00.713]] [LOG] Try Favorite - HTTP Error: 429 Too Many Requests
[[Apr 28 21:27:00.718]] [LOG] Try Favorite - HTTP Error: 429 Too Many Requests
[[Apr 28 21:27:00.793]] [LOG] Try Favorite - HTTP Error: 429 Too Many Requests
另请注意,转推功能使用相同的控制台日志记录方法。请参阅下面的代码,并且输出正常。
// try retweet
T.post('statuses/retweet', id, function(err, response){
// log failures
if(err){
console.log('Try Retweet - ', err[0].message);
}
【问题讨论】:
-
尝试在没有 [0] 的情况下记录错误
-
我目前正在检查速率限制,看看它们是否可能在当天的收藏夹中受到速率限制,尽管通常它的输出不同,它可以解释发生的随机性。
-
GET 收藏/列表速率限制为每个窗口 75(15 分钟),而 GET 搜索/推文为 180(用户)- 450(应用)每个窗口。快速运行所有请求的编号。
-
所以,如果我理解正确,我收到错误的原因是因为它请求代码 429 消息,而不是可能以不同方式传递的“你已经收藏了这条推文”消息?但是,运行这些数字,似乎用户不应该受到速率限制,并且速率限制应该在新窗口开始时释放,但这种情况已经发生了更长的时间。
标签: javascript node.js twitter bots node-modules