2

一周前我迁移到 2.2.1,遇到了一些严重的问题,我的项目在 2.1.5 中运行良好。

从最早的 play2 版本开始,我一直使用以下过程来访问我的公共资产(从官方文档复制粘贴):

-> 路线文件:

GET   /assets/*file  controllers.Assets.at(path="/public", file)

在模板文件中:

<link href="@{routes.Assets.at("stylesheets/bootstrap.css")}" rel="stylesheet">

没有任何问题。

但是,现在我升级到 2.2.1,它只在 DEV 模式下工作(播放调试/运行),在 PROD 中,我所有的资产 URL 都返回 404 错误。

我认为这是一个打包问题,检查了主 jar 文件,我可以看到公共文件夹以及各种 *.js 和 *css 文件,因此它们似乎被正确包含。生成的 URL 看起来也很干净:

http://localhost:9000/assets/stylesheets/bootstrap.css

我使用单个模块布局并在 Windows 7 上进行开发。我尝试在 linux debian 6 上进行部署,但遇到了完全相同的问题。

我会很感激任何帮助,似乎我不是唯一一个遇到这个问题的人,但还没有关于可能的修复的信息......恢复到 2.1.5 将是一项艰巨的任务,因为 2.2 在 API 中引入了一些严重的不兼容性并且需要许多代码更改。

4

2 回答 2

0

你应该在你的路线文件中/assets/*file而不是,/assets*file但我怀疑这会解决你的问题。

如果您对某些资产有其他特定路线,请确保一般GET /assets/*file路线是您路线文件中的最后一条。

于 2013-11-12T10:42:35.940 回答
0

我终于通过从我的项目中一一删除所有依赖项找到了问题的原因。我使用的插件之一(Japid)是用早期版本的 play 2.2.x 编译的,与 2.2.1 不兼容,导致资产路由出现问题。

幸运的是,japid 作者反应迅速并解决了这个问题。(见版本 0.9.14.1)

于 2013-11-14T15:41:30.007 回答