3

game.tsファイルがコンパイルされるこのgame.jsコードに問題があります。

var GameObjects = require("./GameObjects")

ページindex.htmljsインポートを次のように設定しました。

<script language="javascript" src="javascripts/require.js" type="text/javascript"> </script>
<script language="javascript" src="javascripts/jquery-1.8.2.min.js" type="text/javascript"> </script>
<script language="javascript" src="ts/GameObjects.js" type="text/javascript"> </script>
<script language="javascript" src="ts/game.js" type="text/javascript"> </script>

そしてこれはクロームのエラーです:

Uncaught ReferenceError: exports is not defined GameObjects.js:82
Uncaught Error: Module name "GameObjects" has not been loaded yet for context: _. Use require([]) http://requirejs.org/docs/errors.html#notloaded

アイデアの友達はいますか?

4

2 に答える 2

5

JavaScriptファイルを手動で編集するというアイデアがどこから来たのかわかりません。TypeScriptをフラグ付きでコンパイルする場合、ステートメントはステートメントに変換される--module amdため、JavaScriptファイルを編集する必要はありません。importrequire

ページに必要なスクリプトタグは次のとおりです。

<script src="javascripts/require.js" data-main="ts/game.js"></script>

require.jsが読み込まれると、game.jsが読み込まれ、requireステートメント(importTypeScriptファイル内のステートメント)に遭遇するたびに、そのスクリプトが読み込まれ、コードが実行されます。

importTypeScriptファイルにステートメントを追加するだけで、jQueryやGameObjects、その他のモジュールを読み込むことができます。

于 2012-12-14T16:25:23.040 に答える
3

data-mainrequire.jsscriptタグに属性がありません。RequireJSのドキュメントを注意深くお読みください。

簡単に言うと、属性で指定されたファイルに配置しts/GameObjects.jsたトップレベルの呼び出しからロードする必要があります。例(ドキュメントから):requiredata-main

<!DOCTYPE html>
<html>
    <head>
        <title>My Sample Project</title>
        <!-- data-main attribute tells require.js to load
             javascripts/main.js after require.js loads. -->
        <script data-main="javascripts/main" src="javascripts/require.js"></script>
    </head>
    <body>
        <h1>My Sample Project</h1>
    </body>
</html>

次に、javascripts/main.js(入力したものと一致する限り、実際には好きなように呼び出すことができますdata-main)で、モジュールを呼び出しrequireてロードし、モジュールを使って好きなことを行います。

require(["ts/GameObjects.js", "ts/game.js"], function(GameObjects, Game) {
  ... use 'GameObjects' and 'Game' here ...
});

を覚えておいてts/GameObjects.jsくださいts/game.js。コードを呼び出しでラップする必要があるdefine()ため、モジュールとして解釈されます。

お役に立てば幸いです。

于 2012-12-14T00:14:14.047 に答える