Pobierz polyfill w Reakcie, który nie działa w pełni w IE 11


To pobieranie działa dobrze w Chrome:
<pre class="lang-js prettyprint-override">
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.');
}
});

używam

isomorphic-fetch

i wypełnię swoją obietnicę za pomocą obietnicy-polyfill. Używam WebPacka i Babel do kompilacji js.
Kiedy wykonuję ten kod w IE11, wykonywane jest wstępne pobieranie danych, a moja odpowiedź rzeczywiście zawiera żądane dane, ale w ogóle nic nie jest wykonywane w mojej todze (zastosowałem dzienniki console.logs w kilku różnych miejscach, aby sprawdzić, czy szarpią wszystko po zakończeniu pobierania ... nie ma mowy). Nie mam błędów konsoli, więc zakładam, że IE11 jest całkiem zadowolony ze skompilowanej składni js.
Czy ktoś ma dla mnie wskazówkę do wypróbowania? Czy muszę przepisać instrukcję pobierania w bardziej szczegółowy sposób, aby przeglądarka IE11 mogła ją w pełni zaimplementować? W tym momencie wszystko jest przydatne! Dzięki za wszelkie uwagi.
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Patrząc na
isomorphic-fetch
, pakiet jest po prostu rodzajem metapakietu, który importuje-eksportuje albo
whatwg-fetch
, albo
node-fetch
w zależności od tego, czy jesteś w kontekście przeglądarki lub hosta.
Myślę, że twój problem polega na tym, że użyje domyślnej wersji węzła (patrz.

Główny wpis w package.json
https://github.com/matthew-and ... %23L6
).
Będąc polifillem, jest po prostu pomijany na urządzeniach innych niż IE, ponieważ przeglądarki domyślnie obsługują pobieranie. IE11 używa wypełnienia, ale jest to wypełnienie węzła i nie będzie działać w przeglądarce.
Możesz wymusić na pakiecie internetowym korzystanie z wersji przeglądarki, dołączając do niej określoną wersję przeglądarki:
require('isomorphic-fetch/fetch-npm-browserify')

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

lub w konfiguracji webpacka:
entry: [
'isomorphic-fetch/fetch-npm-browserify',
'app.js'
]
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Oto, czego ostatecznie użyłem, co zadziałało dla mnie:
require('es6-promise').polyfill();
require('fetch-everywhere');

Wypróbowałem dwie inne opcje, które reklamowały się jako magiczne i polyfilling, ale powyższa kombinacja ostatecznie pozwoliła mi przejść do REST z niezgodności IE w moim kodzie. :)
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Aby plik fetch.js działał wewnętrznie, musisz dołączyć następujące pliki

IE 11+

  • „./node_modules/es6-promise/p-n/EC6-promise.auto.js”
  • 'isomorphic-fetch'

Przed rozpoczęciem


komendy webpack, aby upewnić się, że instalujesz te pliki w node_modules, wykonaj następujące czynności:

instalacje npm - Zapisz izomorficzną obietnicę przynieś EC6-I

następnie umieść to we właściwości wpisu pakietu internetowego:
entry: [
'./node_modules/es6-promise/dist/es6-promise.auto.js',
'isomorphic-fetch',
'path for main file'
]

Teraz wejdź


słowo kluczowe webpack w terminalu/cmd i powinieneś mieć plik znajdujący się w folderze dist (chyba że podasz inną ścieżkę wyjściową) z dostępnym polifillem.
Oto oficjalna strona github fetch.js polyfill
https://github.com/matthew-and ... fetch
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Musimy dodać wypełnienie do wyboru w IE, zapoznaj się z tym wypełnieniem, które działa dla Ciebie

https://github.com/github/fetch
https://github.com/github/fetch

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się