Firebase-tool 未能在本地测试模式下将我的 Js 文件作为 HTML 文件发送

Firebase-tool missed sending my Js files as HTML file in locally testing mode

目前我使用 firebase-hosting 和 firebase-database 来部署 static-page 网络应用程序。我在测试本地托管时遇到问题。我的两个 Js 文件之一 modules.jsmain.js 作为 html 文件发送。因此,在我的客户端浏览器 (Firefox) 中,控制台中一直出现此错误:

Uncaught SyntaxError: expected expression, got '<'

我尝试更改 Firebase 配置中的 headers 项:

"headers": [
    {
        "source": "**/*.@(js)",
        "headers": [
            {
                "key": "Content-Type",
                "value": "application/javascript; charset=utf-8"
            }
        ]
    }
]

即使 header 已更改,文件仍会提供 HTML 内容。 (在网络选项卡中,它说 js,但它的响应仍然是 html 内容,而不是 js 内容。)

当然,我也重新启动了本地服务器。我还在开发工具中禁用缓存以确保我的浏览器继续下载最新文件。剩下的唯一选择是重新启动整个计算机。但就算能修好。我还是想知道为什么会这样。

这通常发生在您重写单页应用程序时(例如 {"source": "**", "destination": "/index.html"} 并且您的 <script> 标签具有无效的 src URL,因此 index.html 改为服务。

我会检查以下问题:

  1. 您是否使用来自非根 URL 的相对路径(例如 js/modules.js)?
  2. 输出文件的大小写是否完全匹配?
  3. 当您尝试通过 URL 直接访问 JS 文件时会发生什么?

同样,问题不在于 JS 文件作为 HTML 提供,而是在未找到 JS 时提供默认 HTML 文件。