Play Framework 2.3.7: location of static assets not working in production

I saw a few questions about this, but did not seem to understand it.

I have a Play Framework 2.3.7 website (Activator 1.2.12), when I run it in dev mode, everything works fine. When I run it in production mode, I get the following errors:

[app] $ start [info] Wrote C:\Users\App\git\website2.0\target\scala-2.10\app_2.10-1.0- SNAPSHOT.pom [info] Main Scala API documentation to C:\Users\App\git\website2.0\target\scala- 2.10\api... [info] Compiling 57 Scala sources and 58 Java sources to C:\Users\App\git\websit e2.0\target\scala-2.10\classes... [error] C:\Users\App\git\website2.0\target\scala-2.10\twirl\main\views\html\admi n\shared\foot.template.scala:29: value at is not a member of controllers.Reverse Assets [error] Seq[Any](forApp.raw/*1.1*/("""<script data-main=""""),_display_(/*1.21*/ routes/*1.27*/.Assets.at("javascript/admin.js")),forApp.raw/*1.60*/("""" type="t ext/javascript" src=""""),_display_(/*1.91*/routes/*1.97*/.Assets.at("lib/requir ejs/require.js")),forApp.raw/*1.135*/(""""></script> [error] ^ [error] C:\Users\App\git\website2.0\target\scala-2.10\twirl\main\views\html\admi n\shared\head.template.scala:31: value at is not a member of controllers.Reverse Assets [error] <link rel="stylesheet" media="screen" href=""""),_display_(/*3.46*/route s/*3.52*/.Assets.at("stylesheets/admin.css")),forApp.raw/*3.87*/(""""> [error] ^ [error] C:\Users\App\git\website2.0\app\views\admin\shared\foot.scala.html:1: va lue at is not a member of controllers.ReverseAssets [error] <script data-main="@routes.Assets.at("javascript/admin.js")" type="text/ javascript" src="@routes.Assets.at("lib/requirejs/require.js")"></script> [error] ^ [error] C:\Users\App\git\website2.0\app\views\admin\shared\head.scala.html:3: va lue at is not a member of controllers.ReverseAssets [error] <link rel="stylesheet" media="screen" href="@routes.Assets.at("styleshee ts/admin.css")"> [error] ^ [error] C:\Users\App\git\website2.0\target\scala-2.10\twirl\main\views\html\home .template.scala:38: value at is not a member of controllers.ReverseAssets [error] <div class="item active" style="background-image:url(""" ),_display_(/*10.71*/routes/*10.77*/.Assets.at("images/bg-app-list.jpg")),fo rApp.raw/*10.117*/(""")"> [error] ^ [error] C:\Users\App\git\website2.0\app\views\home.scala.html:10: value at is no ta member of controllers.ReverseAssets [error] <div class="item active" style="background-image:url(@ro utes.Assets.at("images/bg-app-list.jpg"))"> [error] ^ [error] C:\Users\App\git\website2.0\target\scala-2.10\twirl\main\views\html\shar ed\foot.template.scala:29: value at is not a member of controllers.ReverseAssets [error] Seq[Any](forApp.raw/*1.1*/("""<script data-main=""""),_display_(/*1.21*/ routes/*1.27*/.Assets.at("javascript/main.js")),forApp.raw/*1.59*/("""" type="te xt/javascript" src=""""),_display_(/*1.90*/routes/*1.96*/.Assets.at("lib/require js/require.js")),forApp.raw/*1.134*/(""""></script> [error] ^ [error] C:\Users\App\git\website2.0\target\scala-2.10\twirl\main\views\html\shar ed\head.template.scala:31: value at is not a member of controllers.ReverseAssets [error] <link rel="stylesheet" media="screen" href=""""),_display_(/*3.46*/route s/*3.52*/.Assets.at("stylesheets/main.css")),forApp.raw/*3.86*/(""""> [error] ^ [error] C:\Users\App\git\website2.0\app\views\shared\foot.scala.html:1: value at is not a member of controllers.ReverseAssets [error] <script data-main="@routes.Assets.at("javascript/main.js")" type="text/j avascript" src="@routes.Assets.at("lib/requirejs/require.js")"></script> [error] C:\Users\App\git\website2.0\target\scala-2.10\twirl\main\views\html\shar ed\nav.template.scala:39: value at is not a member of controllers.ReverseAssets [error] ^ [error] <img src=""""),_display_(/*11.28*/routes/*11.34*/.Assets .at("images/logo/small_beta.png")),forApp.raw/*11.74*/(""""> [error] ^ [error] C:\Users\App\git\website2.0\app\views\shared\head.scala.html:3: value at is not a member of controllers.ReverseAssets [error] <link rel="stylesheet" media="screen" href="@routes.Assets.at("styleshee ts/main.css")"> [error] ^ [error] C:\Users\App\git\website2.0\app\views\shared\nav.scala.html:11: value at is not a member of controllers.ReverseAssets [error] <img src="@routes.Assets.at("images/logo/small_beta.png" )"> [error] ^ [info] Packaging C:\Users\App\git\website2.0\target\App-1.0-SNAPSHOT-ass ets.jar ... [info] No documentation generated with unsucessful compiler run [error] 6 errors found [error] 6 errors found [info] Done packaging. [error] (compile:doc) Scaladoc generation failed [error] (compile:compile) Compilation failed Cannot start with errors. 

The problem seems to be related to requirements and its resource. The code for the first footer error is as follows:

  <script data-main="@routes.Assets.at("javascript/admin.js")" type="text/javascript" src="@routes.Assets.at("lib/requirejs/require.js")"></script> 

My asset route file:

 # Map static resources from the /public folder to the /assets URL path GET /assets/javascript/routes.js controllers.Application.javascriptRoutes() GET /assets/javascript/admin_routes.js controllers.admin.Application.javascriptRoutes() GET /assets/*file controllers.Assets.at(path="/public", file) 

Here is my build.sbt

 import WebKeys._ import RjsKeys._ import play.PlayJava name := """app""" version := "1.0-SNAPSHOT" lazy val root = (project in file(".")).enablePlugins(PlayJava, SbtWeb) libraryDependencies ++= Seq( javaJpa, javaJdbc, cache, "org.hibernate" % "hibernate-core" % "4.2.3.Final", "org.hibernate" % "hibernate-entitymanager" % "4.2.3.Final", "mysql" % "mysql-connector-java" % "5.1.31", "org.webjars" %% "webjars-play" % "2.2.0", "joda-time" % "joda-time-hibernate" % "1.3", "org.mindrot" % "jbcrypt" % "0.3m", "net.sf.flexjson" % "flexjson" % "3.2", "org.apache.commons" % "commons-lang3" % "3.3.2", "com.clever-age" % "play2-elasticsearch" % "1.1.0", // WebJars (ie client-side) dependencies "org.webjars" % "requirejs" % "2.1.14-1", "org.webjars" % "jquery" % "1.11.1", "org.webjars" % "bootstrap" % "3.1.1-2" exclude("org.webjars", "jquery"), "com.clever-age" % "play2-elasticsearch" % "0.8.2", "net.sourceforge.htmlunit" % "htmlunit" % "2.15", "commons-io" % "commons-io" % "2.4", "com.github.tototoshi" %% "play-flyway" % "1.1.2" ) pipelineStages := Seq(rjs, digest, gzip) RjsKeys.paths += ("jsRoutes" -> ("/jsroutes" -> "empty:")) RjsKeys.paths += ("adminJsRoutes" -> ("/adminJsRoutes" -> "empty:")) includeFilter in (Assets, LessKeys.less) := "*.less" excludeFilter in (Assets, LessKeys.less) := "_*.less" 

Can anyone point me in the right direction? Hooray!

+7
java scala requirejs playframework
source share
1 answer

I have a solution to my own problem, not sure if this is the right way or not, but the way it works for me.

  • pipelineStages: = Seq (rjs, digest, gzip) - Removed rjs since it is no longer required in the new Play
  • The platform batch configuration method has recently been changed with playframework updates, now you are using the sbt package to execute it. in this case its "sbt docker: stage"
  • The docker.aws.json file is required to map the open port to the aws beanstalk external port.
  • a docker file must be added in the permissions line to allow deployment of the beanstalk script directory access
  • in the sbt package, which is associated with windows, there is an error in the fact that there is a limit of characters on the command line that falls. This is why I can not start local production mode using the activator. This error is still outstanding, so I cannot run it locally in pride mode.
  • the docker file is now generated in the sbt package process, so I added docker ports to the sbt.build file. I need to find a command to add to sbt.build that will make a permission line in the docker file so that we can use jenkins script to automate the process

A few sites that I found really helped me:

Hope this helps someone!

+3
source share

All Articles