【发布时间】:2016-03-10 14:21:10
【问题描述】:
我正在使用带有 Scala 的 Play 2.4.2。
这是我的路线文件。
GET /favicon.ico controllers.Assets.at(path="/public", file="images/favicon.png")
GET /robots.txt controllers.Assets.at(path="/public", file="files/robots.txt")
GET / controllers.Default.redirect(to = "http://www.marketingpage.local")
GET /assets/*file controllers.Assets.at(path="/public", file)
GET /:id controllers.XController.method0(id: String)
GET /path/:id controllers.XController.method1(id: String)
我正在使用注入路由生成器。这是在我的构建中。
routesGenerator := InjectedRoutesGenerator,
/、/:id、/path/:id 路由在开发和生产中运行良好,但是在这些页面上的生产中没有任何资产返回。
进一步的测试表明,没有使用 controllers.Assets.at 的路由在生产中起作用。在开发过程中,它们确实在我的本地机器上工作。
在生产中,如果我尝试直接访问资产,我会得到默认的“Action not found for request 'GET /assets/stylesheets/attachments.css'”,例如。
因此对资产的请求正在到达 Play 服务器。
我已尽我所能解决此问题。
我怀疑这与依赖注入有关。
有什么想法吗?
【问题讨论】:
-
您如何构建生产?如果您使用
stage/distbuild,请尝试在lib文件夹中查找your_project_name-your_version-assets.jar。如果此 jar 包含您的资产,则打开调试,以testProd运行播放,转到play.api.controllers.AssetsBuilder类,并调试assetAt方法。您提供的信息很少,无法给出准确的答案。
标签: scala playframework playframework-2.0 playframework-2.4