Получение 'TypeError: невозможно прочитать свойство' 0 'of undefined' при попытке получить часть данных из MediaWiki API - PullRequest
0 голосов
/ 08 мая 2020

Я пытаюсь что-то закодировать, чтобы получить различные атрибуты из MediaWiki API. Однако он выдает ошибку, когда я пытаюсь получить определенные данные со страницы, например заголовок.

        const reqDesc = (requestid) => new Promise((resolve, reject) => {
            request({
                method: 'GET',
                url: `https://example.wikia.com/api/v1/Articles/AsSimpleJson?id=${requestid}`
            }, (error, response, body) => {
                if (!error && response.statusCode === 200) {
                    return resolve(`<${body.sections[0].content[0].text}>`);
                } else if (error) {
                    return reject(`Error: ${error}`);
                } else {
                    return reject(`Response code: ${response.statusCode}`);
                }
            });
        });

(я знаю, что запрос устарел, я пытаюсь найти что-то получше.)

Приведенный выше код должен работать, однако на return resolve(`<${body.items[0].id}>`); он выдает 'TypeError: Cannot read property' 0 'of undefined'

1 Ответ

0 голосов
/ 16 мая 2020

Вместо request можно использовать Ax ios. Что касается 'TypeError: Cannot read property '0' of undefined', это означает, что либо sections, либо content не определено. Вы можете посмотреть, что находится внутри body.

Пример:

let requestid = 1;
let url = `https://example.wikia.com/api/v1/Articles/AsSimpleJson?id=${requestid}`;
axios({
  url: url,
  responseType: 'json',
})
.then(response => {
  console.log('--response--');
  let section = reponse.data.sections[0] || {};
  let content = section.content || {};
  let elem = content[0] || {};
  let text = content.text;
  return text;
})
.then(console.log)
.catch(error => {
  console.log('--error--');
  console.log(error);
});

...