Модули JavaScript ES6 + traceur

Я использую модули ES6, перенесенные в ES5 с помощью traceur.
Транспиляция осуществляется через grunt + grunt-traceur

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: Несоответствующий анонимный модуль define(): функция ($__0) {

Кажется, что есть проблемы с плагином grunt, но даже использование более старой версии, похоже, не помогает.

Код был адаптирован из статьи.

1 ответ

Кажется, у меня была очень похожая проблема (и я погуглил ваш вопрос, пытаясь найти решение).

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

Прежде всего, вам нужно загрузить оба 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-с в 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. Надеюсь, это поможет вам.

Другие вопросы по тегам