1

Я только начинаю работу с SystemJS и загрузчиком модуля ES6. У меня есть простой тест модуль:SystemJS - загрузчик модулей ES6 - чрезмерная иерархия при импорте

var Feature = { 
    init : function(){ 
     console.log("Feature.init"); 
    } 
}; 
export {Feature}; 

которая затем импортируемого

System.import('js/feature.js').then(function(Feature){ 
    Feature.init(); 
}); 

Который затем выдает ошибку

Uncaught (in promise) TypeError: Feature.init is not a function 

Однако, если я называю инициализации, как это вместо того, чтобы он работает

System.import('js/feature.js').then(function(Feature){ 
    Feature.Feature.init(); 
});  

Я не уверен откуда идет родительский объект, или если есть способ обойти его. Что мне не хватает?

+0

Вы используете именованный экспорт, и обещание, похоже, разрешено с использованием пространства имен модулей – Bergi

ответ

0

Эта линия:

export {Feature}; 

Transpiles к:

module.exports.Feature = Feature; 

Вы, вероятно, ищете ES6 default ключевое слово:

export default Feature; 

Который transpiles к:

module.exports = Feature; 
+0

Я тоже это пробовал, но он не обеспечил ожидаемого результата. Фактически это дало мне еще больше иерархии, чтобы иметь дело с: 'Feature.default.Feature.init();' Был единственным способом добраться до функции после включения «по умолчанию» – nhavar

+0

Это не должно это так. Ваш транспилер может делать что-то неправильное. http://babeljs.io/repl/#?experimental=false&evaluate=true&loose=false&spec=false&code=var%20Feature%20%3D%20%7B%0A%20%20init%3A%20function()%20%7B% 0A% 20% 20% 20% 20alert ('hello'% 2C% 20'world ')% 3B% 0A% 20% 20% 7D% 0A% 7D% 0A% 0Aexport% 20default% 20Feature% 3B – TbWill4321

+0

@ TbWill4321: babel 6 теперь это разные – Bergi