2016-12-13 2 views
1

это выборка отлично работает в Chrome:Fetch polyfill в React не полностью работает в 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 свое обещание с обещанием-polyfill. Я использую webpack и babel для компиляции js.

Когда я выполняю этот код в IE11, выполняется первоначальная выборка данных, и мой ответ содержит запрошенные данные, но ничего из моего «тогда» вообще не выполняется (я применил console.logs в нескольких разных местах чтобы убедиться, что они вообще подергиваются после того, как выборка завершена ... нет.). У меня нет консольных ошибок, поэтому я предполагаю, что IE11 достаточно доволен составленным синтаксисом js.

Есть ли у кого-нибудь ключ для меня попробовать? Нужно ли мне еще раз переписать мою инструкцию fetch, чтобы IE11 полностью ее выполнил? В этот момент все полезно! Спасибо за любой вклад.

+0

У меня есть работа в IE11, но я использую 'babel-polyfill' не просто« обещание-полипол ». Вы можете попробовать это :) –

+0

Похоже, что fetch работает, но ваш обещающий polyfill - нет. Вы добавили «if (! Window.Promise) {window.Promise = Promise;}« где-то в вашем коде для документов? https://github.com/taylorhakes/promise-polyfill/blob/master/README.md –

+0

Работает и на IE 11 –

ответ

0

Глядя на isomorphic-fetch, пакет представляет собой только мета-пакет, который импортирует либо экспорт whatwg-fetch, либо node-fetch в зависимости от того, находитесь ли вы в браузере или в контексте узла.

Я думаю, что ваша проблема в том, что она будет использовать версию узла по умолчанию (см. main entry in the package.json).

Будучи полиполком, он просто пропускается без IE, поскольку браузеры поддерживают выборку по умолчанию. В IE11 используется полипол, но это многопользовательский узел, который не будет работать в браузере.

Вы могли бы заставить Webpack использовать версию браузера, включив браузер конкретную версию:

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

или

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

или в WebPack конфигурации:

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

Итак, вот что я в итоге использовал, что сработало для меня:

Я пробовал два других выборки, которые были рекламированы как волшебные и полиполняющие, но комбо выше - это то, что в конечном итоге позволило мне добраться до REST несовместимости IE в моем коде. :)

 Смежные вопросы

  • Нет связанных вопросов^_^