错误 TypeError:无法读取未定义的属性(读取‘0’)
2023-02-25
2487
这是我的代码:
function App() {
const [input, setInput] = useState();
const [imageURL, setImage] = useState();
const [box, setBox] = useState({});
const calculateFaceLocation = (data) => {
const clarifaiFace = data.outputs[0].data.regions[0].region_info.bounding_box;
const image = document.getElementById('inputImage');
const width = Number(image.width);
const height = Number(image.height);
console.log(width, height);
console.log(clarifaiFace);
};
const onInputChange = (event) => {
setInput(event.target.value);
};
const onButtonSubmit = () => {
setImage(input);
console.log(input);
const raw = JSON.stringify({
"user_app_id": {
"user_id": USER_ID,
"app_id": APP_ID
},
"inputs": [
{
"data": {
"image": {
"url": input
}
}
}
]
});
const requestOptions = {
method: 'POST',
headers: {
'Accept': 'application/json',
'Authorization': 'Key ' + PAT
},
body: raw
};
fetch("https://api.clarifai.com/v2/models/" + MODEL_ID + "/outputs", requestOptions)
// .then(response => response.json())
.then(response => calculateFaceLocation(response.json()))
.then(result => console.log(result))
.catch(error => console.log('error', error));
};
当我尝试 console.log(clarifaiFace) 时出现错误。控制台返回消息“错误 TypeError:无法读取未定义的属性(读取'0') at calculateFaceLocation(App.js:25:1)”
我尝试 console.log(data) 来查看对象是否未传递给 calculateFaceLocation 函数,但它似乎有效,如图所示。 ( https://i.sstatic.net/zDNQM.png ) 因此,问题是我无法访问对象中的索引。已经尝试了很多方法,但都没有用。非常感谢您的帮助!
1个回答
您的代码可能存在问题:输出可能未定义,因为 json 方法返回的是 Promise,而不是直接返回内容( https://developer.mozilla.org/en-US/docs/Web/API/Response/json )。您可以在 .json() 后链接 then() 以收集“真实”json 内容并将其提供给 calculateFaceLocation。
fetch(url, options)
.then(res => res.json())
.then(data => calculateFaceLocation(data))
TeIA
2023-02-25