2

AMD モジュールでコンパイルした次の Typescript ファイルがあります。

import tsmx = module("../TSMX/tsmx");
tsmx.createServer(1337);

これにより、次の js が生成されます。

define(["require", "exports", "../TSMX/tsmx"], function(require, exports, __tsmx__) {
    var tsmx = __tsmx__;

    tsmx.createServer(1337);
})

Node.js にロードしようとすると、次のエラーが発生します。

(function (exports, require, module, __filename, __dirname) { define(["require ^ ReferenceError: define is not defined at Object. (C:\DB\Repo\TSMX\TSMX\TSMXTest\app.js:1:63) ) Module._compile (module.js:456:26) で Object.Module._extensions..js (module.js:474:10) で Module.load (module.js:356:32) で Function.Module で。 _load (module.js:312:12) で Function.Module.runMain (module.js:497:10) 起動時 (node.js:119:16) で node.js:901:3

これを機能させて「定義」を定義するにはどうすればよいですか? ブラウザにコードをロードするので、AMD モジュールが必要です。

私はインポート/名前空間がはるかに簡単な C# と AS3 から来たので、これがアマチュアの質問である場合は申し訳ありません。

編集: http://requirejs.org/docs/node.html#nodeModulesで推奨されているように、ファイルの先頭に追加しました:

if (typeof define !== 'function')
{
var define = require('amdefine')(module );
}

define(function (require)
{
var dep = require('dependency');

return function () { };
});

しかし、これは typescript による define 呼び出し内に配置されるため、役に立たなくなります。次に、定義呼び出しの外に手動で配置しましたが、「モジュール 'amdefine' が見つかりません」というエラーが発生しました。

4

1 に答える 1

1

単なるオプション: ノードで AMD を使用する必要はありません。ノード ファイルをブラウザー ファイルとは別にコンパイルします。ブラウザには AMD を使用します。

それでもノードコードで AMD を使用したい場合は、これが役立つかもしれません: http://nodejs.org/docs/v0.5.0/api/modules.html

私はまだノードを使用していませんが、ブラウザで define / require はサードパーティのライブラリで定義されてます

于 2013-05-06T14:49:35.483 に答える