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 requireBu 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 vees2015gönderdiğiniz kodda ön ayarı belirtmiyorsunuz.