Underscore: Impossible de Babel

Créé le 5 janv. 2017  ·  5Commentaires  ·  Source: jashkenas/underscore

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".

duplicate

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.

Tous les 5 commentaires

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 :

screen shot 2017-02-26 at 9 56 47 pm

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...

Cette page vous a été utile?
0 / 5 - 0 notes