0

最近我开始研究 Heroku Java 应用程序。

一切都很好,直到我将服务器从登台转移到生产......(但它可能不相关)

这些应用程序使用以下构建包:Java Nodejs Bower

凉亭仅用于安装Gentelella

问题是现在它没有从他们那里加载任何东西。它似乎已正确安装,如果我bash到服务器,我可以看到文件。

如果我通过浏览器访问不是通过 Bower 安装的/resources/style.css,它可以正常工作并且我可以看到该文件。例如,如果我去/resources/bower_components/gentelella/vendors/jquery/dist/jquery.min.js,它会给我 404

如果我 bash 到服务器,我可以在正确的位置看到该文件,并且它似乎具有正确的权限。

~/web/resources/bower_components/gentelella/vendors/jquery/dist $ ls -l 总计 296

-rw------- 1 u32669 dyno  85658 Jan 25  2017 jquery.js
-rw------- 1 u32669 dyno  85578 Jan 25  2017 jquery.min.js
-rw------- 1 u32669 dyno 129572 Jan 25  2017 jquery.min.map

我已经清理了缓存,重新启动了测功机和其他愚蠢的“解决方案”。

任何其他想法它可能是什么?

更新

发现提供文件的实际位置是:target/tomcat./webapps/expanded/resources

将所有 bower_components 复制到此文件夹作为临时解决方案,现在它工作正常,但我想了解为什么会发生这种情况。

所以我认为我需要在 Heroku 设置中的其他地方或其他地方将其设置为正确的路径?

4

1 回答 1

0

该问题与构建包的顺序有关。

当 Java buildpack 运行时,它会将 Web 资源复制到 Tomcat 公共目录。发生的事情是 Java buildpack 首先运行,因此 bower 安装从未复制到正确的目录。

只需更改顺序以使 Java buildpack 最后一个运行即可修复它。

于 2017-11-21T12:46:57.167 回答