2016-12-13 54 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。 :)