我正在嘗試使用從 API 檢索 JSON 的不同命令擴展我的 Discord Bot。它適用于前幾個,如:
case 'results':
request('http://ergast.com/api/f1/' args[2] '/' args[3] '/results.json', (error, response, body) => {
if(error) {msg.reply(error); }
const temp = JSON.parse(body);
let answer = '';
try {
for(var i = 0; i < temp.MRData.RaceTable.Races[0].Results.length; i ) {
answer = (i 1) '. '
temp.MRData.RaceTable.Races[0].Results[i].Driver.givenName ' '
temp.MRData.RaceTable.Races[0].Results[i].Driver.familyName ', '
temp.MRData.RaceTable.Races[0].Results[i].Constructor.name '\n';
}
}catch(error) {
console.log(error);
answer = 'Choose earlier race, no results in yet';
}
msg.reply(answer);
});
break;
所以這很有效,很好。當我嘗試從另一個 API 呼叫(f1 賽季的驅動程式排名)獲取其他值時,我在 Heroku 部署的 Discordbot 上遇到了以下日志:
2021-10-22T13:35:57.470709 00:00 app[worker.1]: TypeError: Cannot read property '0' of undefined
2021-10-22T13:35:57.470710 00:00 app[worker.1]: at Request._callback (/app/index.js:254:73)
2021-10-22T13:35:57.470710 00:00 app[worker.1]: at Request.self.callback (/app/node_modules/request/request.js:185:22)
2021-10-22T13:35:57.470710 00:00 app[worker.1]: at Request.emit (events.js:400:28)
2021-10-22T13:35:57.470711 00:00 app[worker.1]: at Request.<anonymous> (/app/node_modules/request/request.js:1161:10)
2021-10-22T13:35:57.470711 00:00 app[worker.1]: at Request.emit (events.js:400:28)
2021-10-22T13:35:57.470711 00:00 app[worker.1]: at IncomingMessage.<anonymous> (/app/node_modules/request/request.js:1083:12)
2021-10-22T13:35:57.470712 00:00 app[worker.1]: at Object.onceWrapper (events.js:519:28)
2021-10-22T13:35:57.470712 00:00 app[worker.1]: at IncomingMessage.emit (events.js:412:35)
2021-10-22T13:35:57.470712 00:00 app[worker.1]: at endReadableNT
(internal/streams/readable.js:1334:12)
2021-10-22T13:35:57.470713 00:00 app[worker.1]: at processTicksAndRejections
(internal/process/task_queues.js:82:21)
我的錯誤代碼如下,日志說,Standingslist(?) 未定義,即使它可以在 http 回應中看到?錯誤代碼:
case 'driverstandings':
request('http://ergast.com/api/f1/' args[2] '/driverStandings.json', (error, response, body) => {
if(error) {msg.reply(error); }
const temp = JSON.parse(body);
let answer = 'Season: ' temp.MRData.StandingsTable.StandingsList[0].round;
try {
for(var i = 0; i < temp.MRData.StandingsTable.StandingsList[0].DriverStandings.length; i ) {
answer = (i 1) '. '
temp.MRData.StandingsTable.StandingsList[0].DriverStandings[i].Driver.givenName ' '
temp.MRData.StandingsTable.StandingsList[0].DriverStandings[i].Driver.familyName ', '
temp.MRData.StandingsTable.StandingsList[0].DriverStandings[i].points ' points, wins: '
temp.MRData.StandingsTable.StandingsList[0].DriverStandings[i].wins '\n';
}
}catch(error) {
console.log(error);
answer = 'No entries';
}
msg.reply(answer);
});
break;
語法方面,我就是想不通我的錯誤。
JSON 的結構如下:json 結構截圖
json 的 API 是:JSON
uj5u.com熱心網友回復:
我沒有試過你的代碼,看起來它應該是Standingslists而不是Standingslist。你可以試試嗎?
帕特里克
uj5u.com熱心網友回復:
錯字 -> StandingList 而不是StandingsList
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/334128.html
上一篇:將元組作為鍵的字典轉換為JSON
