问题描述
部署在 Heroku 上的项目不加载静态文件。
日志:method=GET path="/static/vendor/bootstrap/js/bootstrap.bundle.min.js" status=404
我的设置是 (settings.py on github):
d
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'
解决方法
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
错误,但会弹出一个新错误,请在新问题中询问。