提取返回的TypeError:iPhone 5上的键入错误

时间:2019-04-18 14:38:10

标签: javascript reactjs fetch

我在iPhone 5上进行API调用时遇到问题。

我在组件内部进行了以下API调用

import FavouritesService from "../../api/FavouritesService";
const Favourites = () => {
  const getFavs = () => {
    favouritesService.getFavourites(0, 10, "FULL").then(response => {
      if (response.success === false) {
        //...
      } else {
        //...
      }
    });
  };
};

export default Favourites;

我的FavouritesService获取api端点并在导入过程中调用一个函数,如下所示。

import api from "./api";

class FavouriteService {
  getFavourites(page, pageSize, view) {
    return api.get(
      "/api/social-groups?page=" +
        encodeURIComponent(page) +
        "&pageSize=" +
        encodeURIComponent(pageSize) +
        "&view=" +
        encodeURIComponent(view) +
        "&type=FAVOURITE"
    );
  }
}

export default FavouriteService;

我自己做API的api.js文件如下...

import _ from "lodash";
import "babel-polyfill";
import "isomorphic-fetch";

function handleErrors(response) {
  if (!response.ok) {
    throw Error(response.statusText);
  }
  return response;
}
function handleFetchError(error) {
  // Here is where I get TypeError: Type error
  if (error) {
    return { success: false, error: error };
  }
}

function payloadOptions(method, body) {
  var postBody = body;
  var contentType = "application/x-www-form-urlencoded";
  if (typeof postBody === "object") {
    postBody = JSON.stringify(postBody);
    contentType = "application/json";
  }
  return {
    method: method,
    body: postBody,
    headers: {
      "Content-Type": contentType
    }
  };
}

const defaultOptions = {
  redirect: "error",
  headers: {
    Accept: "application/json"
  }
};

class API {
  request(url, options) {
    return fetch(url, _.defaultsDeep(options || {}, defaultOptions))
      .then(handleErrors)
      .then(response => response.json())
      .catch(handleFetchError);
  }

  get(url, options) {
    return this.request(
      url,
      _.defaultsDeep(options || {}, payloadOptions("GET"))
    );
  }
}

export default new API();

这是handleFetchError中发生错误的地方,error返回TypeError: Type error。当我console.log到此为止时,仅此而已,我无法进一步深入研究实际检查此处实际发生的情况。

我尝试用谷歌搜索,但是似乎没有其他人遇到这个特定问题,因此我认为在发出此GET请求时某个步骤出现了问题。

任何帮助,将不胜感激,因为我已经坚持了一段时间。

1 个答案:

答案 0 :(得分:0)

我发现我必须使用polyfill来进行提取。

answer有助于弄清我必须安装whatwg-fetch