Heroku 404'ing静态文件依赖

时间:2017-11-21 09:14:11

标签: node.js heroku bower gentelella

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

一切都很顺利,直到我将服务器从登台转移到生产......(但可能没有关系)

应用程序使用以下buildpack: Java的 的NodeJS 亭子

凉亭仅用于安装Gentelella

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

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

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

  

〜/ 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

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

还有什么想法吗?

更新

发现服务文件的实际位置是:target / tomcat ./webapps/extended / resources

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

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

1 个答案:

答案 0 :(得分:0)

问题与buildpacks的顺序有关。

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

只需更改顺序,使Java buildpack成为最后一个运行修复它的程序。