Heroku 不加载静态文件,Django

时间:2021-02-28 15:55:15

标签: django heroku whitenoise

部署在 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

1 个答案:

答案 0 :(得分:0)

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 错误,但会弹出一个新错误,请在新问题中询问。

相关问题