2016-09-29 14 views
1

Require JS API -documentationを読んで、これを正しく実行する方法を理解しようとしていますが、ライブラリをロードできないため、定義されていません。私はNPM-WebJarsを通してこれを使用していますが、あなたがそれをどのように定義するかは関係ありません。AMDがサポートしていないモジュールでRequireJSを設定する

基本的には、自分のプロジェクトでthe react-bootstrap-switch -libraryを使用しようとしています。ここにはJavaScript-file source in Pastebinがあり、マスターブランチで変更される可能性があります。 react-bootstrap-switchは、exports.default = Switchでライブラリを定義します。私はRequireJSを使用して定義されたいくつかの他のモジュールを持っています。これはAMDサポートを持っていて動作しています。私はそれが動作しません-Importだけで標準requirejs.configでそうライブラリ

define(['react', 'react-bootstrap-switch'], function(React, Switch){ 
    console.log(Switch); // <- undefined 
} 

を使用してRequireJS

requirejs.config("paths":{"react-bootstrap-switch":["@routes.WebJarAssets.at("react-bootstrap-switch/15.0.0/dist/js/index")"]}}); // the file location 

を使用していますどのようにここで

は、あるAMDのサポートの欠如ので。だから私はシムを使うべきだと思うけど、どうしたらいい?私は少しそれを読んできましたが、私は適切にそれを使用してライブラリをインポートするために失敗しました。それはおそらくかなり簡単なものでなければなりませんが、動作していないようです。例えば、

requirejs.config({ 
      "paths":{"react-bootstrap-switch":["@routes.WebJarAssets.at("react-bootstrap-switch/15.0.0/dist/js/index")"]}, 
      "shim": { 
        "react-bootstrap-switch": { 
          exports: 'Switch' 
         }}}); 

葉は定義されていません。私はinit-functionsで間に入ることを試みてきましたが、ウィンドウ内に正しい名前空間を見つけることができません。また、パスの前にシミングの順番を入れ替えようとしましたが、 'Switch'ではなく 'default'を試してみましたが、他のトリックもありましたが、未定義に固執してしまったので、

最後に、コードをローカルで取得し、exports.defaultの代わりに別のものに変更するか、自分の関数をコード化するだけですが、将来の参照用にこのコードを使用したいと思います。

答えて

1

ロードしようとしているものは、変換され、CommonJS環境をターゲットにしていたファイルです。このようなファイルは、そのままRequireJSで読み込むことはできません。

コードは、最初はdefine(function (require, exports, module) {に、最後は});に改行してください。一度それをすれば、それはかもしれないが働くかもしれない。ラッピングやその他のツールを実行するには、r.jsを使用します。

関連する問題