Firebase REST API 不使用 React Native 上的 Fetch API 响应常见错误代码

Posted

技术标签:

【中文标题】Firebase REST API 不使用 React Native 上的 Fetch API 响应常见错误代码【英文标题】:Firebase REST API doesn't respond with common error codes using Fetch API on React Native 【发布时间】:2022-01-21 14:52:21 【问题描述】:

Firebase API doesn't respond with common error codes using Axios on react native 这里也有类似的讨论,但那家伙正在使用 Axios。我想使用 Fetch API,并希望在当前情况下使用此 API 有类似的解决方案。

问题是当我从 Firebase REST API 收到错误时,响应的状态文本为空。我只有状态码。

如果我将使用 Axios 使用相同的 url 和选项发出相同的请求,我将使用 console.log(error.response.data.error.message) 得到 Firebase API 违反的错误描述(如 TOKEN_EXPIRED、USER_DISABLED、USER_NOT_FOUND、INVALID_REFRESH_TOKEN、MISSING_REFRESH_TOKEN 等)

如何使用 Fetch API 实现相同的输出?

 const response = await fetch(url, 
        method: 'POST',
        headers:  'Content-Type': 'application/json' ,
        body: bodyString
    );

if (response.ok) 
    const payload = await response.json();
    return payload as HttpResponse;
 else 
    throw new Error(`Server error: $response.statusText. Status: $response.status`);

【问题讨论】:

请编辑您的问题以包括以下内容:1) 您返回的状态代码是什么? 2)url的值是多少? 3)bodyString的值是多少? await response.text() 这能回答你的问题吗? How to get the actual error from express instead of status 500 in React on failed fetch in POST method? @FrankvanPuffelen 我已更新票证以使其更清晰,但 url 和 bodyString 的值无关紧要。关键是我希望得到一个错误,但有问题的描述。 【参考方案1】:

我不知道我是怎么错过检查这个的。 解决办法:await response.text()

【讨论】:

以上是关于Firebase REST API 不使用 React Native 上的 Fetch API 响应常见错误代码的主要内容,如果未能解决你的问题,请参考以下文章