Skip to content

rubythonode/cross-fetch

Repository files navigation

cross-fetch Build Status NPM Version License: MIT

Universal WHATWG Fetch API for Node, Browsers and React Native. The scenario that cross-fetch really shines is when the same javascript codebase needs to run on different platforms.


Installation

npm install --save cross-fetch

As a ponyfill:

// Using ES6 modules
import { fetch } from 'cross-fetch';

// Using CommonJS modules
const { fetch } = require('cross-fetch');

As a polyfill:

// Using ES6 modules
import 'cross-fetch/polyfill';

// Using CommonJS modules
require('cross-fetch/polyfill');

Usage

As a ponyfill:

const { fetch } = require('cross-fetch');

fetch('//api.github.com/users/lquixada')
  .then(res => {
    if (res.status >= 400) {
      throw new Error("Bad response from server");
    }
    return res.json();
  })
  .then(user => {
    console.log(user);
  });

As a polyfill:

require('cross-fetch');

fetch('//api.github.com/users/lquixada')
  .then(res => {
    if (res.status >= 400) {
      throw new Error("Bad response from server");
    }
    return res.json();
  })
  .then(user => {
    console.log(user);
  });

⚠️ Warning: If you're in an environment that doesn't support Promises such as Internet Explorer, you must install an ES6 Promise compatible polyfill. es6-promise is suggested.

API

You can find a comprehensive doc at Github's fetch page.

FAQ

Yet another fetch library?

I did a lot of research in order to find a fetch library that could meet theses criterias:

  • Simple import / require (no configuration required)
  • Platform agnostic (client, server or react native)
  • Optional polyfill (it's up to you if something is going to be added to the global object or not)

There's a plethora of libs out there but none could match those. My preferred library used to be isomorphic-fetch but it has this issue with react native. Also, polyfilling is mandatory.

How does it work?

cross-fetch (like isomorphic-fetch) is just a proxy. If you're in node, it delivers you the node-fetch library, if you're in a browser ou React Native, it delivers you the github's whatwg-fetch. The same strategy applies if you're using polyfill or ponyfill.

Suported environments

  • Node 4+
  • React-Native
  • Browsers
    • Chrome
    • Firefox
    • Safari 6.1+
    • Internet Explorer 10+

Thanks

Heavily inspired by the works of matthew-andrews. Kudos to him!

License

cross-fetch is licenced under the MIT licence.

About

Universal WHATWG Fetch API for Node, Browsers and React Native

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • JavaScript 100.0%