尝试从MediaWiki API获取数据时,获取'TypeError:无法读取未定义的属性'0']

问题描述 投票:0回答:1

我正在尝试编写一些代码,以从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:无法读取未定义的属性'0''

javascript mediawiki
1个回答
0
投票

代替request,您可以使用Axios。对于'TypeError: Cannot read property '0' of undefined',这意味着sectionscontent未定义。您可能想看一下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);
});

© www.soinside.com 2019 - 2024. All rights reserved.