Django Heroku 引发 ValueError("缺少 '%s' 的静态文件清单条目" % clean_name)

ash*_*999 10 django heroku

我收到 500 服务器错误,因为我的静态文件似乎存在问题:

我的项目文件夹名称是register,我有不同的用于生产和开发的设置文件:

register
--live-static
--register
----settings
------__init__.py
-----common.py
-----production.py
-----development.py
--live-static
--static
Run Code Online (Sandbox Code Playgroud)

在我的production.py文件中我有:

from register.settings.common import *
import django_heroku

django_heroku.settings(locals())

DEBUG = False
STATIC_URL = '/static/'
STATICFILES_DIRS = [ 
    os.path.join(BASE_DIR, 'static')
]
STATIC_ROOT = os.path.join(BASE_DIR, 'live-static', 'static-root')
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'live-static', 'media-root'
Run Code Online (Sandbox Code Playgroud)

我已经跑过: python manage.py collect static heroku run python manage.py collectstatic

我得到了以下结果: 1626 static files copied to '/app/live-static/static-root', 4464 post-processed.

但是,当我访问我的网站后,出现错误:

raise ValueError("Missing staticfiles manifest entry for '%s'" % clean_name)
2020-09-07T19:46:28.324481+00:00 app[web.1]: ValueError: Missing staticfiles manifest entry for 'css/main.css'
Run Code Online (Sandbox Code Playgroud)

在我的模板中我有{% static 'css/main.css' %}

我不知道为什么我仍然收到错误,因为我的收集静态已经正常工作。我将不胜感激任何帮助。

小智 15

Whitenoise 文档来看,您main.css可能引用了其他文件:

\n
\n

最常见的问题是,有些 CSS 文件引用了其他文件(通常是图像或字体),而这些文件在指定路径中不存在\xe2\x80\x99。当 Django 尝试重写这些引用时,它会查找相应的文件,如果无法\xe2\x80\x99 找到它,则会抛出错误。

\n
\n

我建议您更改 STATICFILES_STORAGE 的值并查看它是否有效:

\n
+ STATICFILES_STORAGE = \'whitenoise.storage.CompressedStaticFilesStorage\'\n- STATICFILES_STORAGE = \'whitenoise.storage.CompressedManifestStaticFilesStorage\'\n
Run Code Online (Sandbox Code Playgroud)\n