2

Play Framework 2.3 プロジェクトで webjar react-0.12.2 を使用しており、次のように依存しています。

libraryDependencies ++= Seq(
  "org.webjars" %% "webjars-play" % "2.3.0-2",
  "org.webjars" % "react" % "0.12.2"
)

ただし、次の例のように「react.js」にアクセスしようとすると、react.js に複数の一致があるためエラーが発生します。

<script type='text/javascript' src='@routes.WebJarAssets.at(WebJarAssets.locate("react.js"))'>

エラー:

MultipleMatchesException: Multiple matches found for react.js. Please provide a more specific path, for example by including a version number.

代わりに「react.min.js」へのアクセスが機能することがわかったので、「react.js」パスに問題があります。しかし、なぜうまくいかないのですか、バグがありますか?

4

1 に答える 1

5

実際react.js、WebJar には のインスタンスが 2 つあります。そのため、ロケーターを使用する場合は、パスをより具体的にする必要があります。以前のwebjars-playバージョン2.3.0-3では、これを行う単一のメソッド呼び出し方法がないため、次のいずれかを実行できます。

Play 2.3 のアセット パイプラインを使用し、抽出ディレクトリ経由でファイルにアクセスします。

<script type='text/javascript' src='@routes.Assets.at("lib/react/react.js")'>

または、次のようなヘルパー メソッドを作成できます。

def fullPath(webjar: String, path: String): String = {
  val version = webJarAssetLocator.getWebJars.get(webjar)
  s"$webjar/$version/$path"
}

次のように使用されます。

<script type='text/javascript' src='@routes.WebJarAssets.at(fullPath("react", "react.js"))'>

webjars-playまたは、バージョンにアップグレードすると2.3.0-3、組み込みのWebJarAssets.fullPathメソッドを使用できます。

<script type='text/javascript' src='@routes.WebJarAssets.at(WebJarAssets.fullPath("react", "react.js"))'>
于 2015-02-06T03:49:53.460 に答える