1

そのため、 Require JS APIのドキュメントを読んで、これを適切に行う方法を理解しようとしていますが、ライブラリをロードできなかったため、未定義として定義されません。私はこれを NPM-WebJars で使用していますが、どのように定義しても問題ないと思います。

基本的に、私は自分のプロジェクトで動作する react-bootstrap-switch -library を利用しようとしています。マスターブランチで変更される可能性があるため、Pastebinの JavaScript ファイルソースを次に示します。react-bootstrap-switch は exports.default = Switch でライブラリを定義します。RequireJS を使用して定義された他のモジュールがいくつかあります。これらは AMD をサポートしており、動作しています。

これが私がRequireJSを使用している方法です

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

ライブラリの使用

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

したがって、標準の requirejs.config -import だけでは、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 の代わりに別のものに変更するか、そのために独自の関数をコーディングすることですが、将来の参考のためにこれを機能させたいと思います。

4

1 に答える 1

1

ロードしようとしているのは、トランスパイルされ、CommonJS 環境をターゲットにするために持っていたファイルであることは明らかです。このようなファイルは、RequireJS によってそのままロードすることはできません。

define(function (require, exports, module) {少なくとも、最初と最後にそのコードをラップする必要があります});。それができたら、うまくいくかもしれません。r.jsラッピングやその他のツールを使用できます。

于 2016-09-29T16:15:52.177 に答える