我在 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.pyurls.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中&lt;meta-data&gt;变量的值

Apache 2.4 .htaccess - 将所有请求指向 index.html,但有一个例外

我在哪里将 html 文件放在我的 web-app 文件夹中,以便使用 maven 进行电梯项目?

如何使用 Angular 突出显示指向当前页面的链接?

Amazon CloudFront 不遵守我的 S3 网站存储桶的 index.html 规则

隐藏 URL 的 index.php(或 index.html)