Ich kann underscore.min nicht mit Babel umwandeln. Ich brauche es, weil ich mit gulp alle Dateien zusammenfüge und sie dann mit babel verarbeite, aber mit Unterstrich gibt es einen Fehler zurück.
Du kannst es hier ausprobieren: https://babeljs.io/repl/# ?babili=false&evaluate=true&lineWrap=false&presets=es2015
Unten im rechten Panel erscheint ein Fehler: "u is undefined".
Ich erhalte "Eigenschaft '_' von undefiniert kann nicht gelesen werden", was anders, aber auch kaputt ist.
Welche Version von Underscore verwendest du?
Ich habe den Verdacht, dass dies mit https://github.com/jashkenas/underscore/pull/2153 zusammenhängt, das im Master behoben wurde, aber wir haben noch keine Version ausgeliefert, die es enthält.
Sie könnten es mit der Version von Underscore auf Master (https://github.com/jashkenas/underscore/blob/master/underscore.js) versuchen und sehen, ob das das Problem löst?
Lassen Sie mich wissen, was Sie finden.
Ich verwende die Version 1.8.3, die neueste. Leider kann ich die unminifizierte Version nicht verwenden, da die "require"-Methoden nicht unterstützt werden.
Exporte werden im Browser nicht unterstützt, Sie benötigen eine gemeinsame js-Umgebung wie node.js/io.js, browserify/webpack usw
Wo sehen Sie den Fehler mit exports
? Ich sehe diese Nachricht, wenn ich die Babel-Website verwende, um sie zu transpilieren, aber der Code sieht gut aus. Während Underscore auf die Variable exports
verweist, erkennt es zuerst, in welcher Umgebung es sich befindet, und verwendet exports
nur, wenn es in einer Knotenumgebung ausgeführt wird.
Im Grunde genommen könnte dieser „Fehler“ nur darauf zurückzuführen sein, dass Babel sich zu sehr bemüht, hilfreich zu sein.
Bearbeitet nach mehr Recherche
Mir ist gerade aufgefallen ... Die eigentliche letzte Zeile von Underscore soll sich selbst mit this
aufrufen:
}.call(this));
Nach der Erstellung durch Babel wird die letzte Zeile jedoch geändert, um undefined
zu übergeben:
}.call(undefined));
Es scheint, dass in ES6-Modulen this
undefined
sein soll (obwohl es mir schwer fällt, die eigentliche ECMA-Spezifikation zu verarbeiten, um festzustellen, ob das wahr ist), also ersetzt Babel es automatisch.
StackOverflow: So hindern Sie babel daran, „this“ in „undefined“ zu transpilieren
Screenshot von Babels Online-Dolmetscher:
Ich denke, das ist mit diesem Commit behoben: https://github.com/jashkenas/underscore/commit/8a847ba69e521b3d7f4faaa6c7c039bcb8e6497b von @lexdene
es ist jedoch keine offizielle Version verfügbar, die diesen Fix enthält; die aktuelle Version 1.8.3
enthält es nicht...
Hilfreichster Kommentar
Ich erhalte "Eigenschaft '_' von undefiniert kann nicht gelesen werden", was anders, aber auch kaputt ist.
Welche Version von Underscore verwendest du?
Ich habe den Verdacht, dass dies mit https://github.com/jashkenas/underscore/pull/2153 zusammenhängt, das im Master behoben wurde, aber wir haben noch keine Version ausgeliefert, die es enthält.
Sie könnten es mit der Version von Underscore auf Master (https://github.com/jashkenas/underscore/blob/master/underscore.js) versuchen und sehen, ob das das Problem löst?
Lassen Sie mich wissen, was Sie finden.