【发布时间】:2021-06-05 00:36:58
【问题描述】:
我正在尝试将 django 项目部署到 heroku 并且很难处理静态文件。我已经正确设置了所有内容,因为它过去对我有用。我不确定这次是什么问题。
以下是我的回溯。这似乎与静态文件路径有关,但如果我的 STATIC ROOT 和 URL 正确,它不应该有问题吗?
-----> $ python manage.py collectstatic --noinput
Traceback (most recent call last):
File "manage.py", line 22, in <module>
main()
File "manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
utility.execute()
File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/__init__.py", line 395, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/base.py", line 330, in run_from_argv
self.execute(*args, **cmd_options)
File "/app/.heroku/python/lib/python3.6/site-packages/django/core/management/base.py", line 371, in execute
output = self.handle(*args, **options)
File "/app/.heroku/python/lib/python3.6/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 194, in handle
collected = self.collect()
File "/app/.heroku/python/lib/python3.6/site-packages/django/contrib/staticfiles/management/commands/collectstatic.py", line 109, in collect
for path, storage in finder.list(self.ignore_patterns):
File "/app/.heroku/python/lib/python3.6/site-packages/django/contrib/staticfiles/finders.py", line 130, in list
for path in utils.get_files(storage, ignore_patterns):
File "/app/.heroku/python/lib/python3.6/site-packages/django/contrib/staticfiles/utils.py", line 23, in get_files
directories, files = storage.listdir(location)
File "/app/.heroku/python/lib/python3.6/site-packages/django/core/files/storage.py", line 316, in listdir
for entry in os.scandir(path):
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/build_0728dd1c_/static'
请帮忙。我知道使用 heroku 部署静态文件是一场噩梦,但我尝试了所有的故障排除,但仍然无法解决这里的问题。
提前致谢。
编辑:被告知添加静态设置...
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
# Base url to serve media files
MEDIA_URL = '/media/'
# Path where media is stored
MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static')
]
【问题讨论】:
-
您是否偶然将
STATICFILES_DIRS放入您的settings.py并放入/static/或BASEDIR / 'static'中? -
请分享
STATICFILES_DIRS和STATIC_ROOT。