Auparavant, babel ajoutait la ligne module.exports = exports["default"]
. Il ne le fait plus. Ce que cela signifie, c'est qu'avant que je puisse le faire :
var foo = require('./foo');
// use foo
Maintenant, je dois faire ça :
var foo = require('./foo').default;
// use foo
Ce n'est pas un gros problème (et je suppose que c'est ce que cela aurait dû être depuis le début). Le problème est que j'ai beaucoup de code qui dépendait de la façon dont les choses fonctionnaient auparavant (je peux en convertir la plupart en importations ES6, mais pas toutes). Est-ce que quelqu'un peut me donner des conseils sur la façon de faire fonctionner l'ancienne méthode sans avoir à parcourir mon projet et à corriger cela (ou même des instructions sur la façon d'écrire un codemod pour le faire, ce serait assez génial).
Merci !
Exemple :
Entrée :
const foo = {}
export default foo
Sortie avec Babel 5
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var foo = {};
exports["default"] = foo;
module.exports = exports["default"];
Sortie avec Babel 6 (et plugin es2015) :
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var foo = {};
exports["default"] = foo;
Notez que la seule différence dans la sortie est le module.exports = exports["default"]
.
Editar
Vous serez peut-être intéressé par ce billet de blog que j'ai écrit après avoir résolu mon problème spécifique : Comprendre les modules ES6, mettre à niveau Babel, des larmes et une solution
0 votes
Je suis curieux, quels sont les cas où le besoin
require
si vous travaillez dans une base de code qui utilise Babel ? Il y a de fortes chances qu'il existe d'autres approches qui vous permettraient d'éviter cela de toute façon.0 votes
Je tire parti d'une fonctionnalité de Webpack qui n'exigera pas le code s'il se trouve dans du code mort comme :
if (false) { require('./foo') }
avec webpack éviterait d'inclurefoo.js
dans le faisceau résultant.0 votes
Ce qui finit par être votre
false
basculer là ? S'il s'agit d'une condition disponible dans votre configuration webpack, il peut y avoir une autre option.1 votes
Celui-ci m'a causé des problèmes pendant des heures avant que je ne trouve cet article. J'ai fini par remplacer tous mes
export default {foo, bar}
conmodule.exports = {foo, bar}
. J'ai bien aimé le incorrect qui n'est désormais plus prise en charge.0 votes
@loganfsmyth C'est très utile pour passer autour de modules entiers sans beaucoup de répétition dans le code. Jetez un coup d'oeil à ce gist gist.github.com/loopmode/3eeaf0764c30439add1d8008e39d0267