Получить возврат TypeError: Ошибка ввода на iPhone 5 - PullRequest
0 голосов
/ 18 апреля 2019

У меня проблема с вызовом API на iPhone 5.

У меня следующий вызов 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.js файл, в котором я сам выполняю API, выглядит следующим образом ...

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 это, это все, что я получаю, я не в состоянии углубиться в детали, чтобы на самом деле проверить, что на самом деле здесь произошло.

Я пытался зайти в Google, но, похоже, ни у кого больше нет этой конкретной проблемы, поэтому я предполагаю, что на каком-то этапе я ошибся при выполнении этого запроса GET.

Любая помощь будет принята с благодарностью, так как я застрял на ней некоторое время.

1 Ответ

0 голосов
/ 18 апреля 2019

Я обнаружил, что мне пришлось использовать polyfill, чтобы позволить мне получить.

Этот ответ помог понять, что мне нужно установить whatwg-fetch

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...