2015-02-05 76 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"))'> 
相關問題