【发布时间】:2017-08-24 11:57:52
【问题描述】:
我正在使用 Play! 框架 (2.6.2)、Scala (2.12.2) 并尝试将 LESS 集成到其中。
我在他们的文档网站上使用this 教程。
在我的 build.sbt 文件中,这是代码:
lazy val root = (project in file(".")).enablePlugins(PlayJava, PlayEbean, SbtWeb)
includeFilter in (Assets, LessKeys.less) := "*.less"
excludeFilter in (Assets, LessKeys.less) := "_*.less"
LessKeys.compress in Assets := true
在我的 plugin.sbt 文件中我添加了:
addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.1.2")
我有 2 个扩展名为 .less 的文件。 main.less 和 login.less 在 /public 目录下的 /css 文件夹中。
当我在目标文件夹中编译和运行项目时,文件保留为 .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)
-------
【问题讨论】:
-
我有一个类似的 PlayFramework 版本 (2.3.8),对我来说 .css 文件只生成了 MINIFIED。您能否检查编译输出的
target/web/less/ ...etc文件夹中的实际 .css 文件名?对我来说,生成的 .css 称为main.min.css。 -
我没有 /web/less 目录。
-
您可以尝试在输出目录中搜索 *.css 文件。 (在我的情况下,此输出目录如上所述,当然您的输出目录会有所不同,具体取决于您的项目设置..)
-
我做了,整个 /target 文件夹中什么都没有出现
-
您的 /target 文件夹中没有一个 .css 文件?
标签: css playframework less