Django collectstatic 在 Heroku 环境中忽略一个文件夹

Django's collectstatic ignores a folder in Heroku environment

我正在构建一个 Django+Vue 单体,我正在尝试实现的发布管道假设将 Vue 前端构建到 Django 应用程序的静态文件夹中,运行 collectstatic 并开始服务器。静态文件通过 WhiteNoise 提供。

它在我的机器上完美运行。构建的文件夹最终位于收集的静态文件目标中,其内容得到很好的服务:

但是当托管在 Heroku 上时,除了这个构建在动态文件夹中的其他所有内容都会被收集,即使它存在于 static 文件夹中,它也不会最终出现在 staticfiles 中的应用程序。我确保执行顺序是正确的,甚至在确保文件夹已成功构建后手动 运行 collectstatic

您可能已经注意到,我在 .gitignore 中有此文件夹,但我已尝试将其从那里删除但无济于事。

出现这种行为的原因可能是什么?运行

p.s。将 DEBUG 设置为 True 并通过 Django 的开发服务器提供静态文件会生成一个可运行的应用程序,这再次证明文件位于正确的位置。

这听起来像是您在动态构建该目录时遇到的问题。您可能需要创建一个 custom buildpack to account for that process. Or have a release phase action 来创建它。

事实证明,我只需要更改 buildpack 的顺序,以便 NodeJS buildpack 在 Python 之前运行。

您可以在此处阅读有关设置构建包顺序的信息:https://devcenter.heroku.com/articles/using-multiple-buildpacks-for-an-app