目前我使用firebase宿主和firebase数据库来部署静态页面web应用程序。我在本地测试我的主机时遇到了一个问题。我的两个Js文件modules.js
和main.js
中的一个以html文件的形式发送。所以在我的客户端浏览器(Firefox(中,控制台中出现了这个错误:
Uncaught SyntaxError: expected expression, got '<'
我试图更改Firebase配置中的headers
项目:
"headers": [
{
"source": "**/*.@(js)",
"headers": [
{
"key": "Content-Type",
"value": "application/javascript; charset=utf-8"
}
]
}
]
即使更改了头,文件仍然提供HTML内容。(在网络标签中,它说js,但它的响应仍然是html内容,而不是js内容。(
当然,我也重新启动了本地服务器。我还禁用了开发工具中的缓存,以确保我的浏览器不断下载最新的文件。剩下的唯一选项是重新启动整个计算机。但即使它能解决问题。我仍然想知道为什么会发生这种情况。
当您重写单页应用程序时,通常会发生这种情况(例如{"source": "**", "destination": "/index.html"}
和<script>
标签的src
URL无效,因此会提供index.html
。
我会检查以下问题:
- 您是否使用非根URL的相对路径(例如
js/modules.js
( - 您是否与输出文件的大小写完全匹配
- 当您尝试通过JS文件的URL直接访问该文件时会发生什么
同样,问题不是JS文件被作为HTML提供,而是当找不到JS时,默认的HTML文件被提供。