无法加载模块脚本:需要 JavaScript 模块脚本,但服务器在 Vite + React Firebase 项目中以 MIME 类型“text/html”进行响应

问题描述 投票:0回答:1

我的 Vite + React 项目在部署到 Firebase 时遇到问题。我收到的控制台错误是:

无法加载模块脚本:需要 JavaScript 模块脚本,但服务器以 MIME 类型“text/html”进行响应。根据 HTML 规范对模块脚本强制执行严格的 MIME 类型检查。

项目结构:

/project-root
  /public
    index.html
    vite.svg
  /src
    /components
    main.jsx
    App.jsx
  /dist (generated after build)
    index.html
    assets/
  /utils
  /build (after this hosting)
    index.html
  firebase.js
  firebase.json
  index.html
  vite.config.js

vite.config.js

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'

// https://vitejs.dev/config/
export default defineConfig({
  plugins: [react()],
})

index.html(构建)

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <link rel="shortcut icon" type="./images/png" href="/logo.png"/>
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>SAYTTC 2024</title>
  </head>
  <body>
    <div id="root"></div>
    <script type="module" src="../src/main.jsx"></script>
  </body>
</html>

firebase.json

{
  "hosting": {
    "public": "build",
    "ignore": [
      "firebase.json",
      "**/.*",
      "**/node_modules/**"
    ],
    "rewrites": [
      {
        "source": "**",
        "destination": "/index.html"
      }
    ]
  }
}

采取的步骤:

  1. 运行
    npm run build
    ,在
    dist
    目录下生成生产文件。
  2. 使用
    firebase deploy
    部署到 Firebase。

问题:

部署后,访问该站点会导致上述控制台错误,并且不显示任何内容。看来服务器正在提供 HTML 文件而不是预期的 JavaScript 模块。

javascript reactjs firebase vite
1个回答
0
投票

错误的根源是浏览器仍然使用旧的index.html,它使用旧的index-.js文件 - 在新部署后不再存在。

请参阅我的答案以获取可能的解决方案:https://stackoverflow.com/a/78758140/1243547

© www.soinside.com 2019 - 2024. All rights reserved.