1

プロジェクトにはサーバー、クライアント、共有コードが含まれているため、 "-m umd"を使用してTypeScriptを翻訳します。ただし、クライアントサイドコードはブラウザでは機能しません。ブラウザは何のエラーも表示せず、私が見つけたブレークポイントはヒットしなかったので、js-tsマッピングを削除する必要がありました。それから、私はそれをデバッグすることができました、そして、私は問題を発見しました。 TypeScript UMDは、 'module'と 'define'の両方が定義されていません

はUMDが生成するコードです:

​​

それは動作しませんので、「モジュール」との両方「を定義」未定義です。したがって、私のコードは実行されず、例外もありません。

どういうところが間違っていますか?どうすればそれを動作させることができますか?

+2

モジュールローダーを使用する必要があります。 –

+0

@Tamas HegedusのようなSystemJS?だから私はその場合にUMDを使う必要はありません。私はUMDが私にその問題を解決するはずだと思った。 – Alon

+1

UMDはAMDとCommonJSモジュールを統一しているため、これらのモジュールをどちらでも使用できます。 SystemJSはAMDとCommonJSも統一しているため、いずれかをロードすることができます。この問題を解決する唯一の明確な方法は、純粋なes6モジュールを使用し、ロールアップを使用してバンドルすることです。私はtypescriptに組み込まれたバンドラーのようなロールアップがあるのか​​どうかわかりません –

答えて

3

今日、AMDのモジュールをネイティブに理解しているブラウザはありません。 (実際には、MS Edgeのいくつかの新しいビルドの標準ES6を除くモジュールフォーマットはありません)。

したがって、コードにモジュールローダーをバンドルする必要があります。 AMDモジュールと軽量AMDローダのみを使用し、モジュールとモジュールローダを1つのファイルに連結するか、標準ES6モジュールからローダレスバンドルを生成するRollupJSを使用することをお勧めします。私が正しく覚えているのであれば、rollup-plugin-typescriptプラグインは複数のファイルでうまく動作しないので、tscでtypescriptをes6モジュールにコンパイルし、2番目のステップでrollupjsでバンドルすることをお勧めします。

あなたはこのStackOverflowのスレッドでモジュールbundlers詳細を読むことができます:Do I need require js when I use babel?

EDIT

本日(2016年9月)rollup-plugin-typescriptプラグインが魔法のように動作します!間違いなくこれは現在推奨されている方法です。

関連する問題