ES6 ' fetch est indéfini`

Je construis un site avec ES6 et Babel.

Dans un fichier de script, j'ai besoin de faire un appel ajax à un service sur le serveur. Pour cela, je fais comme ceci:

fetch('url').then(
    response => response.json()
).then(
    supervisoryItems => doSomething(supervisoryItems)
)

Dans Google Chrome cela fonctionne très bien, mais cela ne fonctionne pas sur Firefox ou IE (je reçois l'erreur fetch is undefined). En cherchant sur Google, j'ai trouvé que cela devrait le réparer:

import promise from 'es6-promise'
promise.polyfill()

, Malheureusement, cela ne change rien, j'ai le même problème. Toute aide?

30
demandé sur JJJ 2016-04-07 21:16:32

4 réponses

Vous devez ajouter le module' isomorphic-fetch 'à votre' paquet.json ' puis importez ceci.

npm install --save isomorphic-fetch es6-promise

Puis dans votre code

import "isomorphic-fetch"

Voir https://www.npmjs.com/package/isomorphic-fetch

50
répondu Kieran Johnson 2016-12-09 11:11:24

Je vais utiliser les deux cdn suivants comme ceci:

<script src="//cdn.jsdelivr.net/bluebird/3.5.0/bluebird.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/fetch/2.0.3/fetch.js"></script>
5
répondu Thomas 2018-08-04 09:07:14

Babel-polyfill ( http://babeljs.io/#polyfill ) n'inclut actuellement pas fetch dans le polyfill. Je pensais d'ajouter cependant.

, Mais ouais pouvez utiliser https://github.com/github/fetch

3
répondu hzoo 2017-05-27 12:49:58

Juste allé à travers cette dernière nuit. En fin de compte, après avoir essayé toutes sortes de choses, la solution était assez simple:

fetch('url').then(
response => response.json()
).then(
supervisoryItem => doSomething(supervisoryItem)
)

Est devenu

window.fetch('url').then(
response => response.json()
).then(
supervisoryItem => doSomething(supervisoryItem)
)

TL; dr fetch (stuff) devrait être window .fetch(des trucs) MODIFIER Cela a fonctionné pour moi sur Chrome

0
répondu Salvatore 2017-06-08 03:34:36