Daha önce babel çizgiyi eklerdi module.exports = exports["default"]
. Artık bunu yapmıyor. Bunun ne anlama geldiğini anlamadan önce:
var foo = require('./foo');
// use foo
Şimdi bunu yapmak zorundayım:
var foo = require('./foo').default;
// use foo
Büyük bir anlaşma değil (ve sanırım bu baştan beri olması gerekirdi). Sorun şu ki, işler eskiden çalıştığım yola bağlı olan bir sürü kodum var (çoğunu ES6 ithalatına dönüştürebilirim, ama hepsi değil). Herkes bana eski bir projeyi geçmek ve bunu düzeltmek zorunda kalmadan nasıl çalışması hakkında ipuçları verebilir (ya da bunu yapmak için bir codemod yazma hakkında bazı talimatlar oldukça kaygan olurdu).
Teşekkürler!
Misal:
Giriş:
const foo = {}
export default foo
Babel 5 ile çıktı
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var foo = {};
exports["default"] = foo;
module.exports = exports["default"];
Babel 6 (ve es2015 eklentisi) ile çıktı:
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var foo = {};
exports["default"] = foo;
Çıkıştaki tek farkın module.exports = exports["default"]
.
Düzenle
Özel sorunumu çözdükten sonra yazdığım bu blog yazısı ile ilgilenebilirsiniz: ES6 Modüllerini Yanlış Anlamak, Babil'i Yükseltmek, Gözyaşları ve Bir Çözüm
if (false) { require('./foo') }
ile webpack aslında foo.js
ortaya çıkan paket dahil atlayın .
false
orada geçiş? Web paketi yapılandırmanızda mevcut bir koşulsa, başka bir seçenek olabilir.
export default {foo, bar}
ile module.exports = {foo, bar}
. Şimdi desteklenmeyen yanlış yöntemi oldukça beğendim .
require
Babel kullanan bir kod tabanında çalışıyorsanız hangi durumlarda ihtiyacınız var ? Muhtemelen, bundan kaçınmanıza izin verecek başka yaklaşımlar da vardır.