2014-10-05 2 views
8

Я использую ES6 modules, переведенный в ES5 с traceur.
Transpilation осуществляются через хрюкать + grunt-traceurJavaScript Модули ES6 + трассировка

Traceur позволяет выбрать, какой модуль обработчик использовать: свой собственный, AMD, CommonJS или инлайн.
Я пробовал большинство из них, но никто, кажется, не работает. Зачем?

TestClass.js

export default class TestClass { 
    constructor() { 
     alert('test'); 
    } 
} 

Main.js

import TestClass from './TestClass'; 

var test = new TestClass(); 

Gruntfile.js (экстракт)

traceur: { 
    options: { 
     experimental: true, 
     blockBinding: true, 
     modules: 'amd' 
    } 
} 

index.html (экстракт)

<script src="js/vendor/traceur-runtime.js"></script> 
<script src="js/vendor/require.js"></script> 

<script defer async src="js/compiled/Main.js"></script> 

Ошибка дал

Uncaught Error: Mismatched anonymous define() module: function ($__0) {

кажется, что there are issues с хрюкать плагин, но даже использует старую версию, кажется, не поможет.

Код был изменен с an article.

+0

Вы также можете взглянуть на [6to5] (http://6to5.github.io/). Он очень прост в использовании [module formatters] (http://6to5.github.io/modules.html) в нескольких разных форматах, которые хорошо сочетаются с другими инструментами. –

ответ

4

Кажется, у меня был very similar problem (и googled ваш вопрос, пытаясь найти решение).

Я не видел ошибки, предоставленные вами, так или иначе, здесь моя преемственность, может быть, это вам поможет.

Прежде всего, вам необходимо загрузить оба сценария js с использованием времени выполнения treceur. Как это:

<script src="js/vendor/traceur-runtime.js"></script> 
<script defer async src="js/compiled/TestClass.js" type="module"></script> 
<script defer async src="js/compiled/Main.js" type="module"></script> 

Обратите внимание, что вы должны указать, что ваши сценарии является module -s в type атрибута.

Чем вы должны загрузить модуль инициализации:

<script> 
    System.get('public_js/init'); 
    // pass your init module name as a parameter 
    // you can see it in private __moduleName variable in compiled init.js 
</script> 

Это реализация хорошо работает для шахты. Я использую 0.2.9 версию grunt-traceur и 0.0.72 версию treceur runtime. Надеюсь, это вам поможет.

+0

спасибо, что у меня была такая же проблема. Будьте любезны, если grunt-traceur разрешил вам перечислять файлы, которые должны запускаться немедленно и не считаться модулями для отложенной загрузки. –