Vorher fügte Babel die Zeile hinzu module.exports = exports["default"]
. Das macht es nicht mehr. Was dies bedeutet, ist bevor ich tun konnte:
var foo = require('./foo');
// use foo
Jetzt muss ich das machen:
var foo = require('./foo').default;
// use foo
Keine große Sache (und ich vermute, das hätte es die ganze Zeit sein sollen). Das Problem ist, dass ich viel Code habe, der davon abhängt, wie die Dinge früher funktionierten (ich kann das meiste davon in ES6-Importe konvertieren, aber nicht alles). Kann mir jemand Tipps geben, wie man die alte Art zum Laufen bringt, ohne mein Projekt durchgehen und dies beheben zu müssen (oder sogar eine Anleitung, wie man ein Codemod schreibt, um dies zu tun, wäre ziemlich schlau).
Vielen Dank!
Beispiel:
Eingang:
const foo = {}
export default foo
Ausgabe mit Babel 5
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var foo = {};
exports["default"] = foo;
module.exports = exports["default"];
Ausgabe mit Babel 6 (und es2015 Plugin):
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var foo = {};
exports["default"] = foo;
Beachten Sie, dass der einzige Unterschied in der Ausgabe die ist module.exports = exports["default"]
.
Bearbeiten
Vielleicht interessiert Sie dieser Blogpost, den ich geschrieben habe, nachdem ich mein spezielles Problem gelöst habe: Missverständnis von ES6-Modulen, Aktualisieren von Babel, Tränen und eine Lösung
if (false) { require('./foo') }
B .: Mit Webpack wird das tatsächliche Einfügen foo.js
in das resultierende Bundle übersprungen .
false
Umschalter dort? Wenn es sich um eine Bedingung handelt, die in Ihrer Webpack-Konfiguration verfügbar ist, gibt es möglicherweise eine andere Option.
export default {foo, bar}
durch ersetzt module.exports = {foo, bar}
. Mir hat die falsche Methode sehr gut gefallen , die jetzt nicht unterstützt wird.
require
Sie arbeiten müssen, wenn Sie in einer Codebasis arbeiten, die Babel verwendet? Möglicherweise gibt es andere Ansätze, mit denen Sie dies ohnehin vermeiden können.