Breaking Change: Babel 6-Export-Standardverhalten
Mit der Veröffentlichung von Babel 6 wurden wesentliche Änderungen in der Handhabung von Standardexporten implementiert . Während Babel zuvor die Zeile module.exports = exports["default"] hinzugefügt hat, wurde diese Funktionalität entfernt.
Diese Änderung erfordert eine Änderung der Modulimportsyntax. Bisher wurde Code mit der alten Syntax verwendet:
var foo = require('./foo'); // use foo
Muss jetzt die folgende Syntax verwenden:
var foo = require('./foo').default; // use foo
Obwohl diese Anpassung geringfügig erscheinen mag, kann sie für Projekte mit erheblichen Codeabhängigkeiten vom vorherigen Exportmechanismus eine Herausforderung darstellen.
Problemumgehung
Wenn das Legacy-Exportverhalten erforderlich ist, wird die direkte Verwendung von CommonJS empfohlen. Alternativ kann ein benutzerdefiniertes Plugin verwendet werden, um die gewünschte Kompatibilität bereitzustellen. Die Funktionalität dieses Plugins würde wahrscheinlich das in Babel 6 entfernte Verhalten widerspiegeln und die Zeile module.exports = exports["default"] zur transpilierten Ausgabe hinzufügen.
Auswirkungen benannter Exporte
Es ist erwähnenswert, dass die Entfernung der automatischen module.exports-Zuweisung die ES6-Semantik verbessert und mögliche Verwirrung verhindert. Benannte Exporte verhalten sich jetzt wie erwartet, ohne versehentliche Zuweisungen zum Standardexport.
Beispiel
Der folgende Code zeigt den Unterschied zwischen dem Exportverhalten von Babel 5 und Babel 6:
// Input
const foo = {}
export default foo
Babel 5 Output
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var foo = {};
exports["default"] = foo;
module.exports = exports["default"];
Babel 6 Output
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var foo = {};
exports["default"] = foo;
Wie zu beobachten ist, ist der einzige Unterschied in der Ausgabe das Fehlen von module.exports = exports["default"] in Babel 6.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3