2016-12-13 86 views
1

這種取精的作品在Chrome中:取在陣營填充工具在IE 11不完全工作

 fetch(this.props.url, {credentials:'same-origin'}) 
     .then((data) => data.json()) 
     .then((data) => { 
      if(data.length > 0) {     
       // do some stuff 
      } else { 
       console.log('No data Richard of the Beard of the Lewis.'); 
      } 
    }); 

我使用等距取,而我polyfilling我的諾言,填充工具的承諾。我使用webpack和babel來編譯js。

當我在IE11中執行此代碼時,會執行初始數據抓取並且我的響應確實包含請求的數據,但是我的'then'中沒有任何內容可以執行(我在幾個不同的地方應用了console.logs看完他們是否在抽搐完成後抽搐......不行)。我沒有控制檯錯誤,所以我認爲IE11對編譯後的js語法非常滿意。

有沒有人有我的嘗試線索?我是否需要以更詳細的方式重寫我的讀取語句,以便IE11能夠完全執行它?在這一點上任何事情都是有幫助的!感謝您的任何意見。

+0

我有工作在IE11中,但我使用'babel-polyfill'不只是'promise-polyfill'。你可以試試:) –

+0

這聽起來像抓取工作,但你的承諾填充不是。您是否在每個文檔的代碼中添加了「if(!window.Promise){window.Promise = Promise;}」的地方? https://github.com/taylorhakes/promise-polyfill/blob/master/README.md –

+0

適用於我的IE 11 –

回答

0

看看isomorphic-fetch,這個軟件包只是一個元數據包,它根據您是在瀏覽器還是在Node上下文導入導出whatwg-fetchnode-fetch

我認爲你的問題是,它會默認使用節點版本(請參閱main entry in the package.json)。

作爲一個polyfill,它只是在非IE瀏覽器上跳過,因爲瀏覽器默認支持提取。在IE11上使用了polyfill,但它是Node的polyfill,它不能在瀏覽器中工作。

你也許能夠強迫的WebPack通過包含瀏覽器特定的版本使用的瀏覽器版本:

require('isomorphic-fetch/fetch-npm-browserify') 

import 'isomorphic-fetch/fetch-npm-browserify' 

或的WebPack配置:

entry: [ 
    'isomorphic-fetch/fetch-npm-browserify', 
    'app.js' 
] 
0

所以這裏是我最終使用的那個對我有用的東西:

require('es6-promise').polyfill(); 
require('fetch-everywhere'); 

我曾試過其他兩個被認爲是神奇和多邊填充的提取,但上面的組合是最終讓我得到我的代碼中IE不兼容的REST。 :)