TL; DR
你必須使用
require('./app').default();
說明
巴貝爾5用於對export default
兼容性黑客:如果一個模塊中只有一個出口,這是默認導出,它被分配到module.exports
。因此,舉例來說,你的模塊app.js
export default function() {}
將transpiled這個
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = function() {};
module.exports = exports["default"];
這與require
-ing巴貝爾-transpiled模塊(像你做純粹兼容性是做)。它也不一致;如果某個模塊包含已命名和默認導出,則它不能爲require
-d。
實際上,根據ES6模塊規範,默認導出爲與名稱爲default
的命名導出無異,。這只是語法糖,可以在編譯時靜態解析,所以這
import something from './app';
是一樣的,因爲這
import { default as something } from './app';
話雖這麼說,看來,巴貝爾6決定放棄互操作性黑客當傳輸模塊時。現在,正如你看到的,沒有更多的分配給module.exports
你的模塊app.js被transpiled爲
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = function() {};
。爲了require
這個模塊,你需要做的
require('./app').default();
你有'.babelrc'嗎?你是否在某處指定了Babel選項?我問,因爲Babel 6默認不會傳輸任何東西,而且您沒有在您發佈的代碼中指定'es2015'預設。 –
@IgorRaush我真的有'.babelrc',其他es6腳本正常運行 – XGHeaven
請閱讀標籤說明。 'babel'是用於帶有所述名稱的* Python庫*的問題。 –