当前位置: 首页 > 知识库问答 >
问题:

前端 - FastAPI 静态文件 MIME 类型返回错误导致 ESM 报错 Strict MIME type checking?

郎献
2024-04-09

同样一个Web应用。家里使用正常。复制到公司电脑启动后访问就报错。

Failed to load module script: Expected a JavaScript module script but the server responded with a MIME type of "text/plain". Strict MIME type checking is enforced for module scripts per HTML spec.

Chrome/Firefox都这样。

用fastapi写的。代码文件都是复制过去的。

app.mount("/static", StaticFiles(directory="static"), name="static")app.mount("/main/assets", StaticFiles(directory="static/assets"), name="static")@app.get("/")async def redirect_to_static():    return RedirectResponse(url="/main")@app.get("/main", response_class=HTMLResponse)async def static_endpoint(request: Request):    return templates.TemplateResponse("static/index.html", {"request": request})import uvicornif __name__ == '__main__':    file = Path(__file__)    uvicorn.run(app=f'{file.stem}:app', host="127.0.0.1", port=8000, reload=True)
<!DOCTYPE html><html lang="en">  <head>    <meta charset="UTF-8">    <link rel="icon" href="/static/favicon.ico">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Vite App</title>    <script type="module" crossorigin src="/static/assets/index-DIiKvbdV.js"></script>    <link rel="stylesheet" crossorigin href="/static/assets/index-CMasdhyl.css">  </head>  <body>    <div id="app"></div>  </body></html>

Snipaste_2024-04-09_11-49-52.png

Snipaste_2024-04-09_12-22-53.png

共有1个答案

汪成仁
2024-04-09

类似问题: https://github.com/pallets/flask/issues/1045

虽然��这个是 Flask 不是 FastAPI,但原因都一样,就是 Windows 注册表因为未知原因损坏导致 MIME 类型映射有问题。

具体解决方案见评论区。

 类似资料:
  • 在典型的 Rust 函数中,返回的值若是有个错误的类型,将导致出现如下所示的错误: error[E0308]: mismatched types --> src/main.rs:2:12 | 1 | fn foo() { | - expected `()` because of default return type 2 | return "foo" |

  • 在前面的例子中,我们使用组合算子显式地处理错误。 另一种处理这种情形分解的方法是使用 match 语句和提前返回(early returns)的组合形式。 也就是说,我们可以简单地停止执行函数并返回错误(若发生的话)。 而且这种形式的代码更容易阅读和编写。考虑如下版本,这是将之前的例子使用提前返回方式重写的: // 使用 `String` 作为错误类型 type Result<T> = std::

  • 我有一个RecyclerView适配器,它可以处理我已经使用多年的几种视图类型。最近,我发现了关于,但我似乎遇到了一个问题,它似乎为返回了错误的值。 我有一个用例,我想显示一个标题,下面是一个项目列表。我已经为标题创建了一个新的适配器类,但是列表项将继续使用我的旧适配器(它还处理其他几种视图类型)。 因此,我连接了两个适配器: 这工作正常,但是当我打开活动时,它立即崩溃并给出错误: JAVAlan

  • 我在应用程序部署期间进行Hibernate验证时遇到了一些问题。我有两个类,Frame和FrameReleasePlan,它们在OneToOne关系中关联。在数据库端,关系是单向的。frame_release_planss表有一个NUMERIC(19,0)类型的“frame_id”列,它是一个指向frame表“id”列的外键。当我尝试部署时,模式验证失败并出现错误: 无法生成Hibernate S

  • 问题内容: 从以下代码 如果我添加一个return语句,它将起作用,并且错误消失了 任何建议都不确定如何在没有虚拟return语句的情况下处理上述问题。 这是我的课程测试 编辑 我已经完成了一个基于操场的简约示例(请复制粘贴以进行测试) 问题答案: 任何建议都不确定如何在没有虚拟return语句的情况下处理上述问题。 您已经很好地解决了问题。匿名函数自动使用单行函数主体作为返回值,因此,要防止这种

  • 问题内容: 我正在学习Java。我试图运行代码,但出现此错误:。它向我显示错误的代码部分。 为什么会这样呢? 问题答案: 这是因为在类中不能有两个具有相同名称但返回类型不同的方法。 子类不能使用与返回类型不同的超类中已经存在的方法相同的名称声明方法。 但是,子类可以声明具有与超类相同的签名的方法。我们称此为“覆盖”。 你需要这个 要么 一个好的做法是通过注释标记覆盖的方法: