2017-05-17 17 views
1

は、私がこの記事をもとに、活字体でSystemJsを使用しようとしている失敗しますChromeのindex.htmlと違反すると、次のエラーが表示され、蒸散が発生していないことを示します。SystemJsは

common.js:85 Uncaught (in promise) Error: Unexpected token : 
    Evaluating http://localhost:8080/src/main.ts 
    Loading src/main.ts 
    ... 

問題点は何ですか?それがためにチェックをSystemJS exportまたはimport等ES6機能が含まれていない - それはコードがtranspiledする必要があることを検出しないのでSystemJSは、main.tsのソースコードをtranspileするtypescriptですを使用しないため

+0

一般的に、私はこのようにブラウザーでトランシルを行うのはベストプラクティスではないと思います。典型的には、ビルド時にtypescriptを実行し、ブラウザが 'node_modules'に到達するのではなく、' .js'をブラウザのサーバ上の 'dist'(または同様の)フォルダに保存する方が良いでしょう。あなたの例のようなクライアント側のコードが表示されます。特定のケースでは、クライアント側のトランスパイルが有用ですが、おそらくデフォルトのケースではない可能性があります。 –

答えて

1

エラーが起こります。

これは、方法がtranspilerのオプションです。 transpiler: 'typescript'にtypescriptコードを使用するように設定したいが、SystemJSはJavaScriptをes6に変換するために使用するように設定されています。typescriptは明示的にサポートされていません。また、コードがes6のように見えない場合、transpilerは使用されません。

SystemJSにコードがes6であることを明示的に伝える必要があります。あなたの例とSystemJS 0.19で動作するSystemJSの設定です。 SystemJSの0.20バージョンでは機能しないことに注意してください。plugin-typescriptよりもyou have no other optionのようです。

<!DOCTYPE html> 
<script src="node_modules/systemjs/dist/system.src.js"></script> 
<script> 
    System.config({ 
    map: {typescript: 'node_modules/typescript'}, 
    packages: { 
     typescript: {main: 'lib/typescript.js', format: 'global'}, 
     src: {defaultExtension: 'ts', format: 'esm'} 
    }, 
    transpiler: 'typescript', 
    }); 
    System.import('src/main.ts'); 
</script> 
+0

最上位の 'import'や' export'のないtypecriptファイルは[** module **](https://www.typescriptlang.org/docs/handbook/modules.html)ではないようですモジュールローダーが混乱するかもしれないことには驚くべきことではありません。モジュール化の精神の中で、ダミーの「輸出」を追加するかもしれませんか? –

関連する問題