2017-08-24 71 views
2

我正在使用Play!框架(2.6.2),斯卡拉(2.12.2)並試圖將LESS集成到它。玩!框架與較少/ CSS

我在他們的文檔網站上使用了this教程。

在我build.sbt文件,這是在地方代碼:

在我plugin.sbt文件我已經添加了:

addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.1.2") 

我有2個文件無延伸。/public目錄下的/ css文件夾中的main.less和login.less。

當我在我的目標文件夾中編譯並運行項目時,這些文件保持爲無文件文件,並且不會被編譯到.css文件中。

在我的HTML模板代碼我有這樣一行:

<link rel="stylesheet" media="screen" href="@routes.Assets.versioned("css/login.css")"> 

如果我改變從login.less進一步擴展到login.css但變量似乎並沒有被訪問到的樣式表的鏈接的作品在login.less文件中。

由於框架似乎沒有將文件編譯爲.css,因此該樣式表的鏈接無法與.css擴展一起使用,它似乎將它們留爲.less文件。因此,我只是在.css文件中獲得404。如果我改變鏈接到.less的擴展然後工作正常,但是我從main.less導入到login.less的變量不起作用。

有沒有我失蹤的一步?有人可以解釋爲什麼框架不會將.less文件編譯爲我的目標文件夾中的.css文件嗎?

編輯1:在嘗試@marcospereira建議的修復後:我認爲應用程序試圖編譯這兩個文件,但也返回錯誤,應用程序根本不運行。

[info] LESS compiling on 2 source(s) 
    ------- 
    Unexpected exception 
    JsTaskFailure: java.lang.NoSuchMethodError: org.mozilla.javascript.ScriptRuntime.setObjectProp(Ljava/lang/Object;Ljava/lang/String;Ljava/lang/Object;Lorg/mozilla/javascript/Context;Lorg/mozilla/javascript/Scriptable;)Ljava/lang/Object; 
     at io.apigee.trireme.node10.main.trireme._c_anonymous_1(trireme.js:37) 
     at io.apigee.trireme.node10.main.trireme.call(trireme.js) 
     at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:394) 
     at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3102) 
     at io.apigee.trireme.node10.main.trireme.call(trireme.js) 
     at io.apigee.trireme.core.internal.ScriptRunner.runScript(ScriptRunner.java:762) 
     at io.apigee.trireme.core.internal.ScriptRunner$4.run(ScriptRunner.java:702) 
     at org.mozilla.javascript.Context.call(Context.java:488) 
     at org.mozilla.javascript.ContextFactory.call(ContextFactory.java:504) 
     at io.apigee.trireme.core.internal.ScriptRunner.call(ScriptRunner.java:697) 
     at io.apigee.trireme.core.ScriptFuture.run(ScriptFuture.java:183) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 
     at java.lang.Thread.run(Thread.java:748) 
    ------- 
+0

我有一個類似PlayFramework版本(2.3 .8),對我而言.css文件僅生成MINIFIED。你可以檢查編譯後輸出的'target/web/less/... etc'文件夾中的實際.css文件名嗎?對我來說,生成的.css被稱爲'main.min.css'。 –

+0

我沒有/ web/less目錄。 –

+0

您可以嘗試在輸出目錄中搜索* .css文件。 (在我的情況下,這個輸出目錄是如上所述,當然你的將有所不同,這取決於你的項目設置..) –

回答

1

您需要在您的機器上安裝node.js。

如果您尚未安裝的node.js,然後將回落到基於Java的三列槳座戰船JavaScript引擎,這並不能很好地工作,並導致該錯誤不

1

託管資產需要在app/assets之內。從the docs

在播放可編譯資產必須在app/assets目錄定義。它們由構建過程處理,LESS源被編譯爲標準的CSS文件。生成的CSS文件作爲標準資源分發到與非託管資產相同的公共/文件夾中,這意味着編譯後使用它們的方式沒有區別。

因此,您需要將文件從public/css移動到app/assets/css

+0

不幸的是,沒有解決問題。我看到它應該在技術上,但似乎引發了一個錯誤。如果你可以看看,我已經更新了錯誤的問題。它似乎試圖編譯2個源文件login.less和main.less,但之後失敗。 –

+0

是否可以共享一個能夠再現問題的小型項目? – marcospereira

+0

我會給它一個 –