私はモジュールを読み込むためにRequireJSを使用しているTypescriptsアプリケーションを作成しています(私はVisual Studio 2015を使用しています)。プラグインの読み込み時にTypescript + RequireJSコンパイラエラーが発生しました
ほとんどすべてのモジュールを.tsクラスから簡単に読み込むことができます。私は自分の書き込み型の.d.tsファイルを使って外部ライブラリから自分自身を書きました。
しかし、私の問題はjquery用のプラグインをロードしたいところから始まります。
私はライブラリ用の型指定ファイルを使用していますが、jquery用のプラグインであるため、論理的に.d.tsファイルにモジュール定義はありません。
私はこのようなRequireJS websiteからシムライブラリのロードのための勧告に従っている:
requirejs.config({
baseUrl: "Scripts",
paths: {
"jquery": "jquery-2.2.3",
"jquery.pjax": "jquery.pjax"
},
shim:
{
"jquery.pjax":
{
deps: ["jquery"],
exports: "jQuery.fn.pjax"
}
}
});
require(["app"]);
そしてRequireJS websiteに従って:
シムの設定は、コードのみの関係を設定します。 shim configの一部であるモジュールをロードするには、通常のrequire/defineコールが必要です。 shimを単独で設定しても、ロードするコードは起動しません。今
、(でもjquery.pjax.jsの隣jquery.pjax.dtを移動した後に)プラグインをロードするため、次の作業のいずれ:
import * as pjax from "jquery.pjax";
import pjax = require("jquery.pjax");
import pjax = require("./jquery.pjax");
import pjax = require("jquery.pjax.js");
import pjax = require("./jquery.pjax.js");
コンパイラはエラーで文句Cannot find module "jquery.pjax"
またはFile C:/foo/bar/jquery.pjax.d.ts is not a module
。
上記のいずれかのコードが存在する限り、app.tsはコンパイルされず、削除するとプラグインはロードされません。私は私のapp.tsファイル内のいくつかの輸入を使用していますし、より多くのがあるだろうということに関しては
は、私は、AMDが手動で関数を定義する書き込みに反対してimport Foo = require("foo")
またはimport * as Foo from "foo"
モジュールのロードスタイルを使用することを好みます。
また、Nugetパッケージ管理を使用しています。外部の.d.tsファイルまたは.jsファイルを手動で編集/移動しない方がよいです。
誰でも私にこれを理解してもらえますか?あなたがrequire("jquery.pjax")
を呼び出すことができるようにしたい場合は
これは非常に包括的な答えです。今すぐ回答を確認してください。ありがとう。 :) –
私はdefinitelytypedを使ってこれと似たような答えを出しました。これはhttp://stackoverflow.com/questions/21179144/how-do-you-setup-a-require-js-config-with-typescript/42955298#42955298です。Timは右! – zobidafly