TL; DR
Kullanmak zorundasın
require('./app').default();
Açıklama
Babel 5, şunlar için bir uyumluluk hackine sahipti export default
: bir modül yalnızca bir dışa aktarma içeriyorsa ve bu, varsayılan bir dışa aktarmaysa, atanmıştı module.exports
. Örneğin, modül app.js kodunuz
export default function () {}
buna aktarılacak
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = function () {};
module.exports = exports["default"];
Bu tamamenrequire
Babel'e aktarılmış modüllerle uyumluluk için yapıldı (sizin yaptığınız gibi). Aynı zamanda tutarsızdı; bir modül hem adlandırılmış hem de varsayılan dışa aktarımları içeriyorsa, require
-d olamaz .
Gerçekte, ES6 modül spesifikasyonuna göre, varsayılan bir dışa aktarma, ada sahip adlandırılmış bir dışa aktarmadan farklı değildir default
. Derleme zamanında statik olarak çözülebilen sadece sözdizimsel şekerdir, yani bu
import something from './app';
bununla aynı
import { default as something } from './app';
Bununla birlikte, Babel 6'nın modülleri aktarırken birlikte çalışabilirlik hackini kaldırmaya karar verdiği anlaşılıyor. Şimdi, app.js modülünüz şu şekilde aktarılır:
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = function () {};
Gördüğünüz gibi, artık görevlendirmek yok module.exports
. To require
Bu modül, yapmanız gereken
require('./app').default();
.babelrc
? Babel seçeneklerini bir yerde mi belirliyorsunuz? Soruyorum çünkü Babel 6 varsayılan olarak hiçbir şeyi aktarmıyor vees2015
gönderdiğiniz kodda ön ayarı belirtmiyorsunuz.