web-dev-qa-db-ja.com

Uncaught ReferenceError:define is not defined typescript

TypeScript、ノックアウト、requirejsは初めてです。このファイルを使用していくつかのデモを作成しました。ここで、TypeScriptとknockoutjsを使用して、いくつかのマイナーなロジックを実装したいと思います。

内部でインポートされる4〜5個のTypeScriptファイルを作成しました。 htmlファイルを実行すると、次のエラーが表示されます。タイトル付き

enter image description here このエラーについて誰かが助けてくれますか?このコードに欠けているもの。

グーグルで検索してかなり良い時間を過ごしましたが、適切な解決策が見つかりませんでした。すべてのモジュールを定義するには、requireJSに関連付ける必要があります。しかし、requireJSの新機能として、それに追いつくことができません。 stackoverflowでも同様のエラーを検索していますが、役に立ちません。

解決策を待っています

21

TypeScriptは、requireJS環境で機能するコード(技術的には [〜#〜] amd [〜 #〜] 環境)。つまり、定義/要求などがすべてすでに存在していると想定した出力が生成されます。

全体的な答えは、コンパイルされたコードに依存する前にRequireJSを含める必要があるということです。

特に、エラーは別の間違いを犯したことを示唆しています:RequireJSモジュールスクリプトに直接依存している(つまり、HTMLに_<script src="my-compiled-code.js"></script>_タグがある)。それはrequireモジュールがどのように機能するかではありません。代わりに、RequireJSを利用可能にしたら、RequireJSを構成する単一の最上位起動スクリプト(HTMLにインラインで、または個別のファイルとして)を用意し、require()の最上位ファイルをアプリケーションですべてを開始します。このファイルは手動で、またはRequireJSの「data-main」属性を使用してロードできます。

たとえば、最小限のHTMLは次のようになります。

_<!DOCTYPE html>
<html>
    <head>
        <script data-main="scripts/main" src="scripts/require.js"></script>
    </head>
    <body>
    </body>
</html>
_

これにより、「scripts/require.js」からRequireJSが読み込まれ、「scripts/main.js」でスクリプトを読み込んで読み込みプロセスを開始するよう指示されます(おそらく両方のパスを更新する必要があります-data-mainは.js拡張子は必要ありません)。

その場合、メインスクリプトは次のような非常に単純なものになります。

_// Set up any config you need (you might not need this)
requirejs.config({
  basePath: "/scripts"
});

// Tell RequireJS to load your main module (and its dependencies)
require("mainmodule");
_

一般に、ここで戦っているのはTypeScriptの問題ではなく、RequireJSです。もう少し時間をかけてRequireだけで(おそらく純粋なJavaScriptを使用しているので、より明確になっています)試してみて、実際に動作する例を見てみます。そうすれば、最初に少し動作してから残りを追加できます。

27
Tim Perry