Je ne peux pas transformer underscore.min avec Babel. J'en ai besoin car, avec gulp, je fusionne tous les fichiers, puis je les traite avec babel, mais avec un trait de soulignement, une erreur est renvoyée.
Vous pouvez l'essayer ici : https://babeljs.io/repl/# ?babili=false&evaluate=true&lineWrap=false&presets=es2015
En bas du panneau de droite une erreur apparaît : "u is undefined".
Je reçois "Impossible de lire la propriété '_' de undefined", ce qui est différent mais également cassé.
Quelle version d'Underscore utilisez-vous ?
Je soupçonne que cela est lié à https://github.com/jashkenas/underscore/pull/2153 qui a été corrigé dans master, mais nous n'avons pas encore publié de version qui l'inclut.
Vous pouvez l'essayer avec la version d'Underscore sur master (https://github.com/jashkenas/underscore/blob/master/underscore.js) et voir si cela résout le problème ?
Faites-moi savoir ce que vous trouvez.
J'utilise la version 1.8.3, la plus récente. Malheureusement, je ne peux pas utiliser la version non minifiée, car les méthodes "require" ne sont pas prises en charge.
les exportations ne sont pas prises en charge dans le navigateur, vous avez besoin d'un environnement commonjs tel que node.js/io.js, browserify/webpack, etc.
Où voyez-vous l'erreur avec exports
? Je vois ce message lorsque j'utilise le site Web de Babel pour le transpiler, mais le code semble correct. Alors qu'Underscore fait référence à la variable exports
, il détecte d'abord dans quel environnement il se trouve et n'utilise que exports
s'il s'exécute dans un environnement de nœud.
Fondamentalement, cette "erreur" pourrait simplement être que Babel essaie trop fort d'être utile.
Edité après plus de recherches
Je viens de remarquer... La dernière ligne de Underscore est de s'invoquer avec this
:
}.call(this));
Cependant après avoir été construit par Babel, la dernière ligne est modifiée pour passer undefined
:
}.call(undefined));
Il semble que dans les modules ES6, this
soit censé être undefined
(bien que j'aie du mal à traiter la spécification ECMA réelle pour déterminer si c'est vrai), donc Babel le remplace automatiquement.
StackOverflow : Comment empêcher Babel de transpiler "ceci" en "indéfini"
Capture d'écran de l'interprète en ligne de Babel :
Je pense que cela est corrigé avec ce commit : https://github.com/jashkenas/underscore/commit/8a847ba69e521b3d7f4faaa6c7c039bcb8e6497b de @lexdene
cependant, il n'y a pas de version officielle disponible contenant ce correctif ; la version actuelle 1.8.3
ne le contient pas...
Commentaire le plus utile
Je reçois "Impossible de lire la propriété '_' de undefined", ce qui est différent mais également cassé.
Quelle version d'Underscore utilisez-vous ?
Je soupçonne que cela est lié à https://github.com/jashkenas/underscore/pull/2153 qui a été corrigé dans master, mais nous n'avons pas encore publié de version qui l'inclut.
Vous pouvez l'essayer avec la version d'Underscore sur master (https://github.com/jashkenas/underscore/blob/master/underscore.js) et voir si cela résout le problème ?
Faites-moi savoir ce que vous trouvez.