【问题标题】:Play Framework 2.3.6 (Java) javascripts and stylesheets not found when deployed to Heroku部署到 Heroku 时未找到 Play Framework 2.3.6 (Java) javascript 和样式表
【发布时间】:2015-01-15 22:32:49
【问题描述】:

我最近在migration guide 之后从版本 2.2.x 升级到 Play Framework 2.3.6(Java 版本)。在本地,我的应用程序按预期工作,但在部署到 Heroku 时,/assets/ 中缺少 javascript 和样式表。我的javascripts位于public/javascripts/,我的样式表是从app/assets/stylesheets/中的LESS文件生成的。

在切换到 Play Framework 2.3.x 后,plugins.sbtbuild.sbt 都发生了很大变化,因此我将两者都包括在下面。也许错误在那里可以找到?

我的plugins.sbt

// Comment to get more information during initialization
logLevel := Level.Warn

// The Typesafe repository
resolvers += "Typesafe repository" at "http://repo.typesafe.com/typesafe/releases/"

// Use the Play sbt plugin for Play projects
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.3.6")

// Use LESS
addSbtPlugin("com.typesafe.sbt" % "sbt-less" % "1.0.4")

// Use JSHint to validate javascript
addSbtPlugin("com.typesafe.sbt" % "sbt-jshint" % "1.0.1")

// Use RequireJS to (among other things) minify javascript
addSbtPlugin("com.typesafe.sbt" % "sbt-rjs" % "1.0.5")

addSbtPlugin("com.typesafe.sbt" % "sbt-digest" % "1.0.0")

addSbtPlugin("com.typesafe.sbt" % "sbt-gzip" % "1.0.0")

addSbtPlugin("com.typesafe.sbt" % "sbt-uglify" % "1.0.3")

我的build.sbt

import com.typesafe.sbt.less.Import.LessKeys
import play.PlayJava

name := "myApp"

version := "1.0-SNAPSHOT"

lazy val root = (project in file(".")).enablePlugins(PlayJava,SbtWeb)

pipelineStages := Seq(rjs, digest, gzip)

scalaVersion := "2.11.1"

val appName = "myApp"
val appVersion = "1.0-SNAPSHOT"

javaOptions ++= Seq("-Xms128m", "-Xmx384m", "-Xss512k", "-XX:+UseCompressedOops")

libraryDependencies ++= Seq(
  javaJdbc,
  javaEbean,
  javaWs,
  cache,
  "be.objectify" %% "deadbolt-java" % "2.3.1",
  "postgresql" % "postgresql" % "9.1-901-1.jdbc4",
  "com.feth" %% "play-easymail" % "0.6.6-SNAPSHOT",
  filters,
  "com.amazonaws" % "aws-java-sdk" % "1.8.9.1",
  "org.avaje.ebeanorm" % "avaje-ebeanorm" % "3.3.3",
  "com.typesafe.play" % "play-ebean-33-compat" % "1.0.0",
  "org.avaje.ebeanorm" % "avaje-ebeanorm-agent" % "3.2.2",
  "commons-io" % "commons-io" % "2.4",
  "net.sourceforge.htmlunit" % "htmlunit" % "2.15"
)

includeFilter in (Assets, LessKeys.less) := "*.less"

excludeFilter in (Assets, LessKeys.less) := "_*.less"

LessKeys.compress in Assets := true

dependencyOverrides += "org.avaje.ebeanorm" % "avaje-ebeanorm" % "3.3.3"

dependencyOverrides += "org.avaje.ebeanorm" % "avaje-ebeanorm-agent" % "3.2.2"

resolvers ++= Seq(
    Resolver.url("Objectify Play Repository", url("http://deadbolt.ws/releases/"))(Resolver.ivyStylePatterns),
    Resolver.url("Objectify Play Snapshot Repository", url("http://schaloner.github.com/snapshots/"))(Resolver.ivyStylePatterns),
    "play-easymail (release)" at "http://joscha.github.com/play-easymail/repo/releases/",
    "play-easymail (snapshot)" at "http://joscha.github.com/play-easymail/repo/snapshots/"
)

【问题讨论】:

    标签: java heroku playframework playframework-2.3


    【解决方案1】:

    pipelineStages := Seq(rjs, digest, gzip) 替换为pipelineStages := Seq(uglify, digest, gzip)。不知道为什么会这样,但它对我有用。

    【讨论】:

    • 纯代码答案会自动标记为低质量,因此不鼓励在 stackoverflow 上使用。以后请用细节修饰你的答案,并解释为什么它是问题的解决方案。
    • 正如我所写的,我不确定为什么会这样,但确实如此。我认为最好有答案而不是什么都没有......
    • 同意,拥有实际解决方案胜过任何其他标准。但是,只是为了让您知道,网站会自动将纯代码答案标记为低质量,因此最终会引起网站管理员的注意。请记得在可能的情况下将您的答案标记为解决方案(我认为是 2 天)。
    • 根据stackoverflow.com/a/27588486/1423583,Play 中不再需要 rjs,因为 Play 会自动处理 requirejs。我在 Play 2.4.2 中遇到了同样的问题,删除 pipelineStages 解决了我的问题。
    猜你喜欢
    • 2013-08-14
    • 2015-11-13
    • 2019-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-06
    • 2014-10-16
    • 2020-12-18
    相关资源
    最近更新 更多