TypeError:无法读取未定义的nodejs请求http的属性'0'
Posted
技术标签:
【中文标题】TypeError:无法读取未定义的nodejs请求http的属性\'0\'【英文标题】:TypeError: cannot read property '0' of undefined nodejs request httpTypeError:无法读取未定义的nodejs请求http的属性'0' 【发布时间】:2021-12-09 04:00:02 【问题描述】:我正在尝试使用从 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 Deployed 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)
我的错误代码如下,日志显示,未定义排名列表(?),即使它可以在 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 structure screenshot
json 的 API 是:JSON
【问题讨论】:
由拼写错误引起的问题很可能会被关闭,因为它们不太可能帮助未来的读者 【参考方案1】:错别字 -> StandingList 而不是 StandingsList
【讨论】:
【参考方案2】:我没有尝试过你的代码,它似乎应该是排名榜而不是排名榜。 可以试试吗?
溴 帕特里克
【讨论】:
是的,我也想通了。不过感谢您的意见! 欢迎您...经常发生在我身上...大多数空指针异常来自拼写错误或数组大小错误 :) 周末愉快 哈哈是的,我想应该是这样的,语法对我来说很好。刚刚离开了几个小时,是的 - 神奇地发现了错误;D你也喜欢它!:)以上是关于TypeError:无法读取未定义的nodejs请求http的属性'0'的主要内容,如果未能解决你的问题,请参考以下文章
TypeError:无法读取未定义的nodejs请求http的属性'0'
Nodejs Promise TypeError:无法读取未定义的属性'then'
TypeError:无法在nodejs中读取未定义的属性“email”
nodejs/mongoDB - 类型错误:无法读取未定义的属性“集合”