首页 > 解决方案 > 读取包装在承诺中的对象的属性的正确方法是什么?(获取类型错误)

问题描述

我有一个异步函数,它从 API 获取 json,并在 Node.js 中返回它。本质上,

export async function getThing(URL){
  let res = await fetch(URL);
  let data = await res.json();
  return data;
}

据我了解,这应该返回一个承诺。在调用函数中,我将它分配给一个变量,然后将其他变量分配给它的属性,并从中构建一个对象。

async function dostuff(){
  let inner = await exportedfile.getThing(URL);
  let gamedescription = inner.propertyOfInner;
}

这似乎很成功,使用正确的字段构建对象。但是,与此同时,每次我这样做都会引发错误,阅读

Uncaught (in promise) TypeError: Cannot read property 'propertyOfInner' of undefined

即使它显然正在成功读取该属性。因此,虽然在承诺解决时正确填充了字段,但显然我做错了什么。读取包装在承诺中的对象的属性的正确方法是什么?

标签: javascriptnode.jsasynchronousasync-awaites6-promise

解决方案


未捕获(承诺中)类型错误:无法读取未定义的属性“propertyOfInner”

上述错误意味着您无法从未定义访问“propertyOfInner”,这意味着您的“内部”变量在某些时候未定义。

我建议您按以下方式访问属性

if (inner) {let gamedescription = inner.propertyOfInner;}


推荐阅读