Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/421.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript null不是对象(正在计算';blob.data';)获取_Javascript_Reactjs - Fatal编程技术网

Javascript null不是对象(正在计算';blob.data';)获取

Javascript null不是对象(正在计算';blob.data';)获取,javascript,reactjs,Javascript,Reactjs,我是JS新手,我正在尝试使用Fetch在react移动应用程序中使用服务。 我想以某种方式捕获由于没有连接或无法访问服务器而导致的错误,但应用程序没有捕获错误,而是崩溃,因为null不是对象(评估'blob.data') 另一件需要记住的事情是,如果应用程序确实可以访问互联网或服务器,那么它就可以完美地工作 您可以使用此函数处理提取错误 import GlobalURL from './Url'; function handleFetchErrors (response) { if (!r

我是JS新手,我正在尝试使用Fetch在react移动应用程序中使用服务。 我想以某种方式捕获由于没有连接或无法访问服务器而导致的错误,但应用程序没有捕获错误,而是崩溃,因为null不是对象(评估'blob.data')


另一件需要记住的事情是,如果应用程序确实可以访问互联网或服务器,那么它就可以完美地工作

您可以使用此函数处理提取错误

import GlobalURL from './Url';

function handleFetchErrors (response) {
  if (!response.ok) throw Error(response.statusText)
  return response
}

export const getMailAvailability = async (mail) => {
    let url = GlobalURL +  mail;
    return fetch(url, {
      method: 'GET',
      headers: {},
    })
    .then(res => handleFetchErrors(res))
    .then(data =>  data.json())
    .catch((error) => console.log("error ", error))
}

在第一个
then
块中,该参数不是
data
,而是HTTP响应对象。我猜很有可能您实际上没有JSON响应,这意味着您无法对其调用
.JSON()
。确保内容应用程序标题设置正确并检查响应该语言中引入了
async/await
功能,因此您无需编写
.then()
.catch()
处理程序。您可以只编写看起来像普通的旧同步代码的代码。事实并非如此,但它避免了调用的混乱问题在于您使用了
async/await
以及
Promise
上的
then
catch
等流畅方法。使用一种或另一种方法,尤其是在这样一个小的方法中,但不能没有很好的理由同时使用这两种方法。我不知道!谢谢你的提示,下次我会记住的。不过,改变这一点并没有解决我的问题,我设法让它在下载Axios并相应地使用它时起作用。谢谢你的帮助!谢谢重播!但这并没有解决我的问题。。。当我关闭后端并尝试调用此方法时,错误仍然存在:(
import GlobalURL from './Url';

function handleFetchErrors (response) {
  if (!response.ok) throw Error(response.statusText)
  return response
}

export const getMailAvailability = async (mail) => {
    let url = GlobalURL +  mail;
    return fetch(url, {
      method: 'GET',
      headers: {},
    })
    .then(res => handleFetchErrors(res))
    .then(data =>  data.json())
    .catch((error) => console.log("error ", error))
}