【问题标题】:Play 2.4.2 Scala controllers.Assets.at action not foundPlay 2.4.2 Scala controllers.Assets.at action not found
【发布时间】: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/dist build,请尝试在lib 文件夹中查找your_project_name-your_version-assets.jar。如果此 jar 包含您的资产,则打开调试,以testProd 运行播放,转到play.api.controllers.AssetsBuilder 类,并调试assetAt 方法。您提供的信息很少,无法给出准确的答案。

标签: scala playframework playframework-2.0 playframework-2.4


【解决方案1】:

诊断此问题的一些提示:

  1. 确保您使用推荐的方式来构建您的应用程序:Play2.4 doc - Building with dist
  2. 检查在您的target 目录中,sbt 将您的所有资产打包在一个专用的 jar 中:

打包应用程序时,应用程序的所有资产(包括所有子项目)都会聚合到一个 jar 中,位于 target/my-first-app-1.0.0-assets.jar 中。这个 jar 包含在分发中,以便您的 Play 应用程序可以为它们提供服务。此 jar 还可用于将资产部署到 CDN 或反向代理

  1. 确保您没有错误配置您的 build.sbt,尤其是 pipelineStages(尝试一个新项目进行比较 - activator new
  2. 确保您没有编辑 /project 文件(尝试一个新项目进行比较)
  3. 仔细检查application.conf 中的配置是否有assets.XXX 值(删除这些配置以尝试)
  4. 确保您的前端服务器不会捕获您的 /public 请求

【讨论】:

    【解决方案2】:

    这原来是 SBT 插件之间的冲突。我为不支持 sbt-native-packager 的旧版本 Play 编写了一个自定义插件,它本质上与 2.4 构建系统现在使用 sbt-native-packager 所做的事情相同。冲突阻止了 dist 构建和打包 web-assets jar。因此,我正在删除我的插件并将设置迁移到 Play 构建工具中内置的等效支持。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-02
      • 2015-06-07
      • 1970-01-01
      相关资源
      最近更新 更多