我在 index.html 中指向 manifest.json 的链接在我运行反应脚本“yarn start”时有效,但在我运行“python3 manage.py runserver”时无效
Posted
技术标签:
【中文标题】我在 index.html 中指向 manifest.json 的链接在我运行反应脚本“yarn start”时有效,但在我运行“python3 manage.py runserver”时无效【英文标题】:My link to manifest.json in index.html works when I run react script 'yarn start', but not when I run 'python3 manage.py runserver' 【发布时间】:2020-02-03 18:59:25 【问题描述】:当我运行“yarn start”时,我的 index.html 文件中指向 manifest.json 的链接工作正常,但当我运行 'python3 manage.py runserver'
时,我在终端中得到的只是:
Not Found: /manifest.json
"GET /manifest.json HTTP/1.1" 404 2234
这也发生在我所有的静态链接和导入上。我对 Django 和 React 以及整个编程都很陌生,所以我认为我只是缺少一些简单的东西,但我无法弄清楚。
我一直在尝试使用% load static %
,但链接不起作用,即使我在settings.py
中编辑STATIC_URL
以指向我的manifest.json
目录。我还尝试编辑view.py
和urls.py
,但我得到的只是终端中的语法错误。除此之外我一无所知。
前端/公共/index.html
<html>
<head>
<title>WebProject</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta charset="UTF-8">
<link rel="manifest" href="manifest.json"/>
</head>
<body style="background-color: #FAF0E6; font-family: Verdana; font-size: 40px;">
<div id="root"></div>
</body>
</html>
前端/urls.py
from django.urls import path
from . import views
from django.conf.urls.static import static
urlpatterns = [
path('', views.index),
]
前端/views.py
from django.shortcuts import render
def index(request):
return render(request, 'frontend/public/index.html')
我希望我的浏览器能够正确加载 manifest.json 以及任何其他链接或导入,但我总是得到一个空白页面。
我在 Django 中使用 React,所以当我尝试导入我的 index.js
时,弹出了相同的“未找到”终端错误。我假设如果我解决了manifest.json
问题,我也会解决我的其他导入和链接问题。
【问题讨论】:
【参考方案1】:我遇到了同样的问题,发现了这个Can't get rid of missing manifest.json error 好吧,就我而言,它与浏览器缓存相关,切换到隐身模式就足够了。
【讨论】:
【参考方案2】:同样的事情发生在我身上(空白页面,无法加载 manifest.json
+ react build 的静态文件),感谢这个出色的 article,我解决了问题
解决方案 -> 假设您的反应应用程序(build
等)位于与您的 django 项目处于同一级别的名为 frontend
的文件夹中,在您的 settings.py
文件中,您需要确保您的 STATICFILES_DIRS
变量设置如下(不要忘记尾随的逗号,因为它是一个元组)。
STATICFILES_DIRS = (
os.path.join(os.path.join(BASE_DIR, 'frontend'), 'build', 'static'),
)
【讨论】:
【参考方案3】:在 urls.py 中:
从 django.urls 导入 re_path
改变: 网址模式 = [ ... path('', TemplateView.as_view(template_name='index.html')]
到:
urlpatterns = [ ... re_path('.*', TemplateView.as_view(template_name='index.html')]
有同样的错误并为我工作。
【讨论】:
以上是关于我在 index.html 中指向 manifest.json 的链接在我运行反应脚本“yarn start”时有效,但在我运行“python3 manage.py runserver”时无效的主要内容,如果未能解决你的问题,请参考以下文章
使用 gradle 在编译时动态设置 Android resValue / BuildConfig / Manifes中<meta-data>变量的值
Apache 2.4 .htaccess - 将所有请求指向 index.html,但有一个例外
我在哪里将 html 文件放在我的 web-app 文件夹中,以便使用 maven 进行电梯项目?