2016-04-07 17 views
20

私はES6とBabelでサイトを構築しています。ES6 `fetch is undefined`

スクリプトファイルでは、サーバー上のサービスに対するajax呼び出しを行う必要があります。そのために、私は次のようにやっている:Google Chromeで

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

これはうまく動作しますが、それは(私はエラーfetch is undefinedを取得しています)、FirefoxやIEでは動作しません。 Googleで検索 は、私は、これはそれを修正する必要がありますが見つかりました:悲しいことに、それは何も変わりません

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

、私は同じ問題を持っています。どんな助け?

答えて

39

'isomorphic-fetch'モジュールを 'package.json'に追加してインポートする必要があります。

npm install --save isomorphic-fetch es6-promise 

は、次に、あなたのコード内で

import "isomorphic-fetch" 

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

+0

はあまりにも夫婦他の実装をありますが、私はこの1つの良い聞きます。 – mpen

+2

ところで、 'import'ステートメントは大文字と小文字を区別します。 (1つの文字を編集できません) –

+0

上記のコマンドを実行すると、他のパッケージ(例:Expressモジュール)が削除されました。 –

0

はちょうどこの最後の夜を経て参照してください。最後には、あらゆる種類のものを試した後、溶液はかなり単純なものでした:

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

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

TLになった; DRは(ものを)フェッチウィンドウ .fetch(もの)でなければなりません EDITこれは私のためにChromeで働いた

+2

に依存します。ブラウザがそれをネイティブに実装していない場合でも、実装を追加する必要があります。 –

2

使用することができます。

<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> 
関連する問題