2015-08-20 4 views
14

Ich benutze Babel mit Schluck (.pipe($.babel())), und es scheint für die meisten Dinge zu funktionieren, funktioniert aber nicht für Array.from.Babel verarbeitet keine Array.from oder 'for ... of' Schleifen

Es funktioniert gut, wenn babel-node läuft:

$ ./node_modules/babel/bin/babel-node.js 
> Array.from 
[Function: from] 

Aber wenn der folgende Code mit schluck verarbeitet:

var foo =() => { console.log(Array.from) } 

Die transpiled Quelle:

var foo = function foo() { 
    console.log(Array.from); 
}; 

und die Konsole Ausgabe, wenn ich foo ausführen, ist:

undefined

Antwort

8

Ended diese selbst zu lösen, während meine Frage schreiben, aber dachte, ich würde beenden und beantworten mich Zukunft Forscher helfen:

Es gibt bestimmte Merkmale von babel, die ein benötigen Polyfill geladen im Browser aufgrund der Einschränkungen von ES5. Dies wird automatisch in babel-node geladen oder Sie können mit mit babel-polyfill einschließen.

Einige der Funktionen erfordern die polyfill:

  • Zusammenfassung Referenzen
  • Array Destrukturierung
  • Async Funktionen
  • Comprehensions
  • Für von
  • Array.from
  • verbreiten
+0

Für alle, die das Polyfill in den Browser einfügen müssen - wenn Sie das Modul grunt-babel npm verwenden, finden Sie das Polyfill in node_modules/grunt-babel/node_modules/babel-core/browser-polyfill. min.js –

+0

babels 'transform-runtime' ist eine bessere Option als polyfill, was den globalen Geltungsbereich auf einer Exxon Valdez Ebene verschmutzt. –

+0

@ThomasMcCabe, das sieht gut aus und ist wahrscheinlich die richtige Wahl in vielen Situationen, aber es unterstützt explizit keine * Instanzmethoden * wie 'Array.from', also keine brauchbare Lösung für diese Frage. –