8

traceurで ES5 にトランスパイルされたES6 モジュールを使用しています。 変換は 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>

エラーが発生しました

キャッチされないエラー: 匿名の define() モジュールが一致しません: 関数 ($__0) {

grunt プラグインに問題があるようですが、古いバージョンを使用しても解決しないようです。

コードは記事から改作されました。

4

1 に答える 1

4

私は非常によく似た問題を抱えていたようです(解決策を見つけようとしてあなたの質問をグーグルで調べました)。

あなたから提供されたエラーを見たことがありませんでしたが、とにかくここに私の実装を投稿してください。

まず、両方の 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

init モジュールをロードする必要があるよりも:

<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>

その実装は私の場合はうまくいきます。私は grunt-traceur の 0.2.9 バージョンと treceur ランタイムの 0.0.72 バージョンを使用しています。これがお役に立てば幸いです。

于 2014-10-20T20:25:37.730 に答える