2015-02-05 42 views
2

我使用webjar反应-0.12.2在我玩框架2.3的项目,我已经依赖于它像这样:为什么我无法从react-0.12.2 webjar访问文件react.js?

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”,而不是工作s,所以'react.js'路径存在问题。但是为什么会出错,是否有错误?

+0

在回答:http://stackoverflow.com/a/28350272/77409 – 2015-02-05 17:26:33

+0

@JamesWard你不介意写一个详细的答案,解释为什么不能找到主要的“react.js”以及如何纠正? – aknuds1 2015-02-06 00:09:58

+0

我刚刚发布了'webjars-play'版本'2.3.0-3',它增加了一个帮助器来处理这个问题。下面的细节。 – 2015-02-06 03:50:39

回答

5

WebJar中实际上有react.js两个实例。所以如果你想使用定位器,你需要更具体的路径。之前webjars-play版本2.3.0-3没有一个单一的方法调用的方式来做到这一点,所以你可以做下列操作之一:

使用Play 2.3资产管道,并通过提取目录访问该文件:

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

或者你可以创建这样一个辅助方法:

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

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

哪想使用

或者,如果您升级到webjars-play版本2.3.0-3那么你可以使用现在内置WebJarAssets.fullPath方法:

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