Wcześniej babel dodawał linię module.exports = exports["default"]
. Już tego nie robi. Co to oznacza, zanim będę mógł:
var foo = require('./foo');
// use foo
Teraz muszę to zrobić:
var foo = require('./foo').default;
// use foo
Nie jest to wielka sprawa (i myślę, że tak powinno być przez cały czas). Problem polega na tym, że mam dużo kodu, który zależał od sposobu, w jaki rzeczy działały (większość mogę przekonwertować na import z ES6, ale nie całość). Czy ktoś może mi dać wskazówki, jak sprawić, by stary sposób działał bez konieczności przechodzenia przez mój projekt i naprawiania tego (lub nawet instrukcja, jak napisać codemod, aby to zrobić, byłaby całkiem sprytna).
Dzięki!
Przykład:
Wejście:
const foo = {}
export default foo
Wyjście z Babel 5
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var foo = {};
exports["default"] = foo;
module.exports = exports["default"];
Wyjście z Babel 6 (i wtyczką es2015):
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var foo = {};
exports["default"] = foo;
Zauważ, że jedyną różnicą w danych wyjściowych jest module.exports = exports["default"]
.
Edytować
Możesz być zainteresowany tym postem na blogu, który napisałem po rozwiązaniu mojego konkretnego problemu: Niezrozumienie modułów ES6, Uaktualnienie Babel, Łzy i rozwiązanie
require
jeśli pracujesz w bazie kodu, która używa Babel? Są szanse, że istnieją inne podejścia, które i tak pozwolą ci tego uniknąć.