为什么我不能从 react-0.12.2 webjar 访问文件 react.js?
Why can't I access the file react.js from the react-0.12.2 webjar?
我在我的 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' 路径有问题。但是为什么会出错,有bug吗?
WebJar 中实际上有两个 react.js
实例。因此,如果您想使用定位器,则需要更具体地说明路径。在 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"))'>
我在我的 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' 路径有问题。但是为什么会出错,有bug吗?
WebJar 中实际上有两个 react.js
实例。因此,如果您想使用定位器,则需要更具体地说明路径。在 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"))'>