Avant, babel ajoutait la ligne module.exports = exports["default"]
. Il ne fait plus cela. Ce que cela signifie, c'est avant que je puisse faire:
var foo = require('./foo');
// use foo
Maintenant, je dois faire ceci:
var foo = require('./foo').default;
// use foo
Pas une grosse affaire (et je suppose que c'est ce que cela aurait dû être tout au long). Le problème est que j'ai beaucoup de code qui dépend de la façon dont les choses fonctionnaient (je peux en convertir la plupart en importations ES6, mais pas en totalité). Quelqu'un peut-il me donner des conseils sur la façon de faire fonctionner l'ancienne méthode sans avoir à passer par mon projet et à résoudre ce problème (ou même des instructions sur la façon d'écrire un codemod pour le faire seraient assez simples).
Merci!
Exemple:
Contribution:
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 le 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"]
.
Éditer
Vous pouvez être intéressé par cet article de blog que j'ai écrit après avoir résolu mon problème spécifique: les malentendus des modules ES6, la mise à niveau de Babel, les larmes et une solution
if (false) { require('./foo') }
avec webpack, il serait en fait ignoré, y compris foo.js
dans le bundle résultant.
false
bascule là-bas? Si c'est une condition qui est disponible dans votre configuration de webpack, il peut y avoir une autre option.
export default {foo, bar}
par module.exports = {foo, bar}
. J'ai bien aimé la méthode incorrecte qui n'est plus prise en charge.
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.