我正在使用ES6爲服務器建立JavaScript通信庫。服務器具有通過WebSocket發送和接收的特定類型的JSON編碼消息。無法在Babel中使用es6`file``的導出模塊
要確保包含所有消息字段並且沒有向服務器發送額外字段,每種消息類型都有自己的類。每條消息都在其自己的文件中定義具有以下結構:如果用戶在一個特定的文件,只需要一個或兩個消息類型
export default class NameOfMessage extends BaseMessage {
constructor(values) {
// Here is code that checks values and sets them as properties
// so that calling `JSON.stringify(obj)` will return the data
// to be sent to the server.
}
}
,它們可以寫import NameOfMessageType1 from 'package_name/messages/type1'
,import NameOfMessageType2 from 'package_name/messages/type2'
等
然而,如果用戶需要許多消息類型,則將其全部包括在內將變得麻煩。爲此,我創建了一個附加文件messages.js
,其中import
是所有的消息文件,然後是它們的重新編號。這樣一來,用戶就可以做import * as Message from 'package_name/messages'
和訪問的消息類型Message.Type1
,Message.Type2
等
根據我的閱讀(包括http://www.2ality.com/2014/09/es6-modules-final.html和https://hacks.mozilla.org/2015/08/es6-in-depth-modules/(標題爲「彙總模塊」),其他來源中科),我應該是可以使用以下作爲messages.js
文件的內容:
export Type1 from './messages/type1';
export Type2 from './messages/type2';
...
然而,當我在,做任何import * as Messages from 'package_name/messages'
文件運行通天,我沒有得到任何結果。 (它只是簡單的沒有做任何事情)。
當我更改文件有以下內容,一切都按預期:
import Type1 from './messages/type1';
import Type2 from './messages/type2';
export {Type1, Type2};
...
爲什麼沒有其他的工作方式?
所以從'./messages/type1'輸出Type1;'真的默默地失敗了?它沒有給出語法錯誤?這是Babel的一個實驗性功能,但如果它未啓用,它應該會引發錯誤。 – loganfsmyth
@loganfsmyth是的,它靜靜地失敗了。 –