我有一个非常基本的代码
const response = await fetch('/api/user');
const user = await response.json();
从 Sentry 中我看到以下错误
undefined is not an object (evaluating 'response.json')
我无法重现它,似乎它只发生在 iPhone 上的任何浏览器上。我在 iPhone 上尝试过,没有任何问题。
此外,我可以添加一个条件来检查
typeof response === 'undefined'
,但我想了解,从fetch
文档来看,它永远不应该返回undefined
创建一个名为
fetchUser()
的函数,并将逻辑包装在 try-catch 块内。
检查 HTTP 响应,如果出现问题(超时、无法访问等...),则抛出错误
async function fetchUser() {
try {
const response = await fetch('/api/user');
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
const user = await response.json();
return user; // If everything goes well...
} catch (error) {
console.error('Could not fetch user:', error);
throw error; // Now, re-throw the captured error
}
}