Prima Babel avrebbe aggiunto la linea module.exports = exports["default"]
. Non lo fa più. Ciò significa che prima che potessi fare:
var foo = require('./foo');
// use foo
Ora devo fare questo:
var foo = require('./foo').default;
// use foo
Non è un grosso problema (e suppongo che questo sia quello che avrebbe dovuto essere da sempre). Il problema è che ho un sacco di codice che dipendeva dal modo in cui le cose funzionavano (posso convertire gran parte di esso in importazioni ES6, ma non tutto). Qualcuno può darmi consigli su come far funzionare il vecchio modo senza dover passare attraverso il mio progetto e risolvere questo problema (o anche alcune istruzioni su come scrivere un codice per fare questo sarebbe piuttosto semplice).
Grazie!
Esempio:
Ingresso:
const foo = {}
export default foo
Uscita con Babele 5
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var foo = {};
exports["default"] = foo;
module.exports = exports["default"];
Uscita con Babel 6 (e plugin es2015):
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var foo = {};
exports["default"] = foo;
Si noti che l'unica differenza nell'output è il module.exports = exports["default"]
.
modificare
Potresti essere interessato a questo post sul blog che ho scritto dopo aver risolto il mio problema specifico: incomprensione dei moduli ES6, aggiornamento di Babel, lacrime e una soluzione
if (false) { require('./foo') }
con webpack salterebbe effettivamente incluso foo.js
nel pacchetto risultante.
false
interruttore qui? Se è una condizione disponibile nella configurazione del tuo webpack, potrebbe esserci un'altra opzione.
export default {foo, bar}
con module.exports = {foo, bar}
. Mi è piaciuto molto il metodo errato che ora non è supportato.
require
se si lavora in una base di codice che utilizza Babel? È probabile che ci siano altri approcci che ti permetterebbero di evitarlo comunque.