【发布时间】:2020-06-18 06:51:49
【问题描述】:
我正在使用 TypeScript 创建一个 Node.js 应用程序,并且我想从外部 API 检索 JSON 数据。我有我正在使用的代码的演示版本,无法放置我的实际代码库。
private async getData() {
return await Axios.get(
`http://dummy.restapiexample.com/api/v1/employees`
).then(response => {
return response.data;
});
}
getReleaseResults() {
this.getData().then(responseData => {
responseData.data.data.forEach((element: any) => {
console.log(element);
});
});
}
我得到的错误信息是:(node:6068) UnhandledPromiseRejectionWarning: TypeError: Cannot read property 'forEach' of undefined
在 C:\Users\Caoilinn.Hughes\OneDrive\Documents\TypeScript Demos\Azure 测试结果电子邮件扩展\emailAzureExtension\app\out\js\apiCaller.js:43:36
在 processTicksAndRejections (internal/process/task_queues.js:97:5)
(节点:6068) UnhandledPromiseRejectionWarning:未处理的承诺拒绝。此错误源于在没有 catch 块的情况下抛出异步函数内部,或拒绝未使用 .catch() 处理的承诺。要在未处理的 Promise 拒绝时终止节点进程,请使用 CLI 标志 --unhandled-rejections=strict(请参阅 https://nodejs.org/api/cli.html#cli_unhandled_rejections_mode)。 (拒绝编号:1)
(节点:6068)[DEP0018] DeprecationWarning:不推荐使用未处理的承诺拒绝。将来,未处理的 Promise 拒绝将使用非零退出代码终止 Node.js 进程。
如果我没有 for each 并将其替换为
console.log(responseData.data.data)
我没有遇到任何问题。仅供参考,结果集有一个 data 属性,因此是“data.data”
【问题讨论】:
-
看起来您的
responseData.data.data不是一个数组。你能检查一下它有什么价值吗? -
看我的回答。它应该可以解决您的问题
标签: node.js typescript promise axios