2015-11-20 7 views
53

Ich habe eine reactjs App mit ES6-Standards geschrieben, und ich verwende webpack, um es zu bauen. Die webpack lädt die js Module unter Verwendung babel-loader. Um genau zu sein, verwende ich die folgenden Versionen von Paketen: ├── [email protected] ├── [email protected] ├── [email protected] └── [email protected]'Symbol' ist undefiniert in IE nach der Verwendung von babel

jedoch nach dem Aufbau, der IE 10 gibt die folgenden Fehler 'Symbol' is undefined. Sollte nicht die babel die Symbol definieren? Gibt es eine spezifische Konfiguration für webpack oder babel Ich muss einstellen, damit es funktioniert? Ich verwende {stage: 0} Konfiguration in meinem .babelrc.

Jede Hilfe wäre willkommen, Vielen Dank!

+1

Könnten Sie auch einen StackTrace hinzufügen? –

Antwort

41

Ok, ich fand schließlich heraus, dass babel allein keine Polyfill. Einschließlich Skript <script src="https://cdnjs.cloudflare.com/ajax/libs/babel-core/5.6.15/browser-polyfill.min.js"></script> löste dieses Problem für mich.

+3

gibt es eine Methode, die ich kann nur dieses Skript in HTML wie: PinkyJie

+0

Ich hatte das gleiche Problem in IE11 und das reparierte es auch für mich. Vielen Dank! – Waterskier19

+0

@Jurom, Wenn ich diese Datei in meinem HTML-Code hinzufügen mein IE stürzt ab :-(. Bitte helfen – Rahul

57

Sie können Polyfill im Eingangspunkt Ihres Codes anfordern, damit es mit dem Rest von JavaScript gebündelt wird.

Eine Möglichkeit ist, zu verwenden:

require('babel-polyfill'); 

Oder:

import 'babel-polyfill'; 

All das in the documentation erklärt.

+2

Ich habe diesen Fehler stundenlang bekämpft DANKE –

+0

Aus irgendeinem Grund funktioniert das nicht in IE10, IE11, daher nehme ich es nur als separates Skript auf für IE wie von Jurom erwähnt.Ich würde wahrscheinlich teilen Sie es aus meinem Hauptbündel in Webpack sowieso .. –

+0

Hallo @Jurom und @ Lukasz, ich bin mit dem gleichen Problem konfrontiert, dass Symbol und seine Funktionen wie Symbol.Iterator im IE undefiniert ist, mit dieses Babel Polyfill meine Seite lädt nicht, aber ein Fehler kommt vom IE, der abstürzt und bittet, neu zu laden. – Rahul

2

in der Dokumentation über Runtime

// in bash 
npm install babel-transform-runtime --save-dev 

// in gulpfile 
.pipe(babel({ 
    plugins: ['transform-runtime'] 
})) 

edit: noch besser auf Heroku in prod Modus --save statt --save-dev

0

OK, hatte ich das gleiche Problem, aber in meinem Fall war das ziemlich anders, also müssen Sie Skript in die Indexdatei wie folgt einfügen:

Aber in meinem Fall habe ich bereits enthalten, dass nach einigen Untersuchungen fand ich heraus, welche meine Proxy das Skript blockieren ...

So sicher machen Sie es in index.html enthalten und auch sicher machen die Sie Zugriff auf das Skript von wo Sie es brauchen, um den Fehler zu vermeiden ...

Aber jetzt, die wir zu diesem Punkt kommen, es ist nicht über Symbol selbst sprechen, was ist Symbol, das nicht in IE erkannt werden kann?

Die Symbol() Funktion einen Wert vom Typ Symbol zurückkehrt, hat statische Eigenschaften, die mehrere Mitglieder integrierte Objekte aufzudecken, hat statische Methoden, die die globalen Symbolregister aussetzen, und ähnelt ein built-in Objektklasse, ist aber als Konstruktor unvollständig, da die Syntax "new Symbol()" nicht unterstützt.

Jeder von Symbol() zurückgegebene Symbolwert ist eindeutig.Ein Symbolwert kann als Kennung für Objekteigenschaften verwendet werden; Dies ist der einzige Zweck der Daten Typ. Einige weitere Erklärungen zum Zweck und zur Verwendung finden Sie im Glossareintrag für Symbol .

Das Datentypsymbol ist ein primitiver Datentyp.

Verwandte Themen