Ошибка типа: невозможно прочитать свойство 'message' из неопределенного - Twitter API - PullRequest
0 голосов
/ 29 апреля 2018

Ниже приведен вывод при запуске 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}`)
        }

      });

Изображение первого вхождения . Как видите, все работало нормально, тогда эта ошибка возникла из ниоткуда без каких-либо изменений в среде или кодовой базе.

As you can see everything was functioning fine, then this error came out of nowhere with absolutely no changes to environment or codebase.

UPDATE:

Вывод при регистрации ошибки с 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);
        }

1 Ответ

0 голосов
/ 29 апреля 2018

Twit использует запрос для отправки HTTP-запросов в Twitter API, поэтому ошибка будет одним объектом, а не массивом, поэтому ваш обработчик ошибок будет выглядеть как

if(err){
  console.log('Try Favorite - ', err.message);
}
...