Django collectstatic 不从 react npm build 文件夹中收集媒体文件

Django collectstatic does not collect media files from react npm build folder

我有一个前端 React 应用程序,在使用 npm run build 之后,它会创建构建文件夹:

在使用了django的python manage.py collectstatic之后,我发现django所做的是它只拉出static文件夹,favicon.ico没有拉出。所以,我的网站图标不起作用。

在我的index.html、<link rel="apple-touch-icon" href="%PUBLIC_URL%/favicon.ico" />

在我的settings.py

STATICFILES_DIRS = [
    os.path.join(BASE_DIR, '../frontend/build/static')
]
STATIC_ROOT = '/var/www/web/home/static/'
STATIC_URL = 'home/static/'

在 chrome 中检查 headers 元素:

<link rel="icon" href="./home/favicon.ico">

如何让它显示我的网络图标。谢谢!

文档中明确指出 Django collectstatic 仅查找

中设置的文件夹中的文件
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, '../frontend/build/static')
]

This will copy all files from your static folders into the STATIC_ROOT directory.

您的网站图标不在任何列出的静态文件目录中


第二件事是 Django 静态文件只能从完整的 STATIC_URL 路径访问(你不能只使用 .home/ 路径)

修复将是以下

之一
  • 只需在静态文件夹中添加图标
  • 使用 ngnix 提供静态文件并添加适当的块(首选)
  • 更改 STATIC_ROOT='/var/www/web/home/' 和 STATIC_URL = 'home/'(注意这样 index.html 并且家里的其他文件都可以访问作为静态文件)