我在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'路径存在问题。但为什么会出错,是否有错误?
答案 0 :(得分:5)
WebJar中实际上有两个react.js
个实例。因此,如果您想使用定位器,则需要更加具体地了解路径。在webjars-play
版本2.3.0-3
之前,没有一种方法调用方法可以执行此操作,因此您可以执行以下操作之一:
使用Play 2.3的资产管道并通过extract目录访问该文件:
<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"))'>