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?
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"
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>
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
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