我使用的是创建反应的应用程序内有明确的服务器。
create-react- app
有一个预先配置的ServiceWorker可以缓存本地资产(https://github.com/facebook/create-react-
app/blob/master/packages/react-scripts/template/README.md#making-a-
progressive-web -app
)。
尝试在服务器上发布时遇到的问题是service-worker.js
文件可用,但是尝试注册文件时浏览器控制台出现错误。
在Firefox上,出现以下错误:
服务人员注册期间发生错误:
类型错误:在ServiceWorker脚本https://my-domain.com/service-worker.js的范围https://my-domain.com/安装过程中遇到错误。
在Chrome上,我得到了更具描述性的错误:
注册Service Worker时出错:DOMException:无法注册ServiceWorker:脚本具有不受支持的MIME类型(’text /
html’)。
果然,如果我在开发人员工具的“网络”选项卡中查找并搜索该service-worker.js
文件,则可以看到该文件在HTTP标头中具有错误的MIME类型。
但是,我不明白为什么它的MIME类型错误?
在我的Express服务器应用程序中,我有一个通配符(星号/ *)路由重定向到index.html
:
// Load React App
// Serve HTML file for production
if (env.name === "production") {
app.get("*", function response(req, res) {
res.sendFile(path.join(__dirname, "public", "index.html"));
});
}
这是一种非常常见的设计模式。但是,这意味着对未知文本文件的所有请求最初都会重定向到index.html
,因此返回MIME类型"text/html"
,即使它实际上是JavaScript或SVG或其他某种纯文本文件。
我发现的解决方案是在通配符路由service-worker.js
之前 添加特定的路由:
app.get("/service-worker.js", (req, res) => {
res.sendFile(path.resolve(__dirname, "public", "service-worker.js"));
});
app.get("*", function response(req, res) {
res.sendFile(path.join(__dirname, "public", "index.html"));
});
现在,当浏览器查找时service-worker.js
,Express将以正确的MIME类型返回它。
(请注意,如果您尝试service-worker.js
在通配符后添加路由,则将无法使用,因为通配符路由将被覆盖。)
我正在使用带有express服务器的create react应用程序。 有一个预配置的ServiceWorker,用于缓存本地资产(https://github.com/facebook/create-react-app/blob/master/packages/react-scripts/template/README.md#making-a-progressive-web-app)。 当我试图
由于以下错误,服务人员未注册 服务人员登记册 作为github问题发布:https://github.com/facebook/create-react-app/issues/8593 Service Worker在尝试注册时出现以下错误: 在Service Worker注册过程中出错: DOMExc0019:无法使用脚本(http://localhost:3000/sw.js)为作用域('htt
我正在尝试将服务人员添加到现有的angular(5.2,CLI 1.7.1)应用程序中。我做了我应该做的一切: > 我甚至尝试将这段代码(我在某处找到了解决方案)添加到main。ts 但我有一个错误: 未捕获(promise中)DOMExc0019:注册ServiceWorker失败:脚本具有不受支持的MIME类型('text/html')。 错误:未捕获(promise中):安全错误:注册Ser
我已经构建了一个RESTendpoint,它使用Spring和Apache CXF2.5来使用和生成Application/JSON。 配置: 当我使用不受支持的内容类型(如application/xml)发送请求(使用REST客户端应用程序)时,我会得到一个内部服务器错误。我希望是405,因为endpoint不支持任何其他内容类型。为什么我会得到这个例外?
我正在开发基本的Spring Boot应用程序,它启用了Spring Security性 当我尝试在my thymeleaf HTML中使用CSS时,出现以下错误: 拒绝应用http://localhost:9999/login的样式,因为它的MIME类型(text/html)不是受支持的样式表MIME类型,并且启用了严格的MIME检查。