Почему я продолжаю получать сообщение «Ошибка: необходимо указать поле media_id». при использовании Twit NPM?

#javascript

#javascript

Вопрос:

У меня есть функция postGirl, которая публикует изображение аниме-девушки в моей учетной записи Twitter. Все изображения загружаются нормально, поэтому у меня есть папка, которая генерирует 400 изображений с именем girl1.jpg — girl400.jpg , так что, похоже, проблема не в этом.

 let postGirl = (girl, girlNum) => {
let numOfGirl = girlNum   1;
let girlImage = './img/girl'   numOfGirl   '.jpg';
var girlImageFinal = girl[3];
console.log(girlImage);
let author = girl[0];
let tags = girl[1];
let hashtags = girl[2];
console.log('posting?');
var b64content = fs.readFileSync(girlImage, { encoding: 'base64' })

OtakuBot.post('media/upload', { media_data: b64content }, function (err, data, response) {
    var mediaIdStr = data.media_id_string
    var altText = 'Cute Girl'
    var meta_params = { media_id: mediaIdStr, alt_text: { text: altText } }
    console.log('inside media/upload');
    OtakuBot.post('media/metadata/create', meta_params, function (err, data, response) {
        if (!err) {
            let postMessage = '';
            console.log(tags[0]);
            postMessage = 'Cute picture with '   tags[0]   ' and '   tags[1]   ' by '   author   ' #animegirls #'   author   ' #'   hashtags[0]   ' #'   hashtags[1]   ' #'   hashtags[2];
            var params = { status: postMessage, media_ids: [mediaIdStr] }

            OtakuBot.post('statuses/update', params, function (err, data, response) {
                console.log(data)
            })
        } else {
            console.log(err);
        }
    })
})
 

}

Я продолжаю получать эту ошибку:

 Error: media_id field must be provided.
at Object.exports.makeTwitError (C:UsersAtlowDocumentsotakubotnode_modulestwitlibhelpers.js:74:13)
at onRequestComplete (C:UsersAtlowDocumentsotakubotnode_modulestwitlibtwitter.js:344:25)
at Request.<anonymous> (C:UsersAtlowDocumentsotakubotnode_modulestwitlibtwitter.js:364:7)
at Request.emit (events.js:327:22)
at Gunzip.<anonymous> (C:UsersAtlowDocumentsotakubotnode_modulesrequestrequest.js:1076:12)
at Object.onceWrapper (events.js:421:28)
at Gunzip.emit (events.js:315:20)
at endReadableNT (_stream_readable.js:1327:12)
at processTicksAndRejections (internal/process/task_queues.js:80:21) {


code: null,
  allErrors: [
    {
      request: '/1.1/media/metadata/create.json',
      error: 'media_id field must be provided.'
    }
  ],
  twitterReply: {
    request: '/1.1/media/metadata/create.json',
    error: 'media_id field must be provided.'
  },
  statusCode: 400
}
 

Ответ №1:

вы проверили data.media_id_string undefined , что функция обратного вызова отсутствует?

Комментарии:

1. Интересно. Я проверил это, и иногда оно не определено (тогда оно выдает ошибку), а в других случаях оно не определено и не выдает ошибку. Это не решает проблему, но приближает меня намного ближе! Спасибо за совет.

2. @AndreThompson Я не мог дать вам подробную справку, потому что не знал точной внутренней логики OtakuBot , но я рад, что это помогло. 🙂