Heroku 不加载静态文件,Django

问题描述

部署在 Heroku 上的项目不加载静态文件

日志:method=GET path="/static/vendor/bootstrap/js/bootstrap.bundle.min.js" status=404

我的设置是 (settings.py on github):

d

如果我修改 STATIC_ROOT 会加载静态文件

char i = 0

但是它在本地机器上失败了。

我在几乎没有帮助的情况下遵循了 Heroku 和 WhiteNoise 准则。 https://devcenter.heroku.com/articles/django-assets http://whitenoise.evans.io/en/stable/django.html

我该如何调试或调查问题?

日志:

MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware','whitenoise.middleware.WhiteNoiseMiddleware',STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR / 'staticfiles'
STATICFILES_Dirs = [ BASE_DIR / 'static' ]

解决方案: 经过长时间的调查,我发现在 procfile 中运行 colecstatic 有帮助

STATIC_ROOT = BASE_DIR / 'static'

Stackoverflow solution

解决方法

https://github.com/AndriiOshtuk/giftme/blob/daf12e22c06d2a9d090c89397143e75edaa1c3a9/giftme/settings.py#L24

BASE_DIR = Path(__file__).resolve().parent.parent

错误:

2021-02-28T17:19:39.656479+00:00 app[web.1]: django.request WARNING  Not Found: /static/vendor/bootstrap/css/bootstrap.min.css
2021-02-28T17:19:39.666996+00:00 app[web.1]: django.request WARNING  Not Found: /static/fa/css/all.min.css
2021-02-28T17:19:39.668254+00:00 app[web.1]: django.request WARNING  Not Found: /static/vendor/jquery/jquery.slim.min.js
2021-02-28T17:19:39.823515+00:00 app[web.1]: django.request WARNING  Not Found: /static/vendor/bootstrap/js/bootstrap.bundle.min.js

/static 不是有效文件夹。

在 Heroku 上部署您的应用程序时,Heroku 将您的所有文件放在 /app 目录下。 static 文件夹因此将位于 /app/static 中。

尝试将其更改为:

BASE_DIR = Path(__file__).resolve().parent

(虽然我不能完全告诉你为什么前一个不起作用,因为我希望 Path(__file__).resolve() 是 /app/giftme/settings.py
.parent 因此将是 /app/giftme
.parent.parent 将是 `/app

如果这解决了 Not Found 错误,但会弹出一个新错误,请在新问题中询问。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...