在 iPhone 上获取返回未定义

问题描述 投票:0回答:1

我有一个非常基本的代码

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

javascript fetch
1个回答
0
投票

创建一个名为

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
  }
}
© www.soinside.com 2019 - 2024. All rights reserved.