django - 与服务 worker react 生产错误 : invalid MIME type

标签 django reactjs nginx

我有一个可以在开发和生产中运行的 React 应用程序,但是在生产中我在控制台中收到以下错误:

The script has an unsupported MIME type ('text/html').
Failed to load resource: net::ERR_INSECURE_RESPONSE
registerServiceWorker.js:80 Error during service worker registration: 
DOMException: Failed to register a ServiceWorker: The script has an unsupported MIME type ('text/html').

该错误不会发生在开发中,只会发生在生产环境中。该应用程序在生产中仍然可以正常工作,但我仍然希望解决错误。

经过一番挖掘,似乎在生产中 service-worker.js 文件是从原始 index.html 文件请求的,而 MIME 类型为 text/html,因此 service-worker.js 文件没有正确的 MIME 类型,而该类型需要为 application/javascript

不幸的是,尽管我认为我了解问题所在,但我无法解决它。

生产版本是使用create-react-app创建的,并由Django后端提供。包含 React 应用程序的 index.html 页面的服务如下:

re_path('.*', TemplateView.as_view(template_name='index.html'))

Nginx 上是否有某些东西需要更改?我猜不会,因为我还有其他生产站点在 MIME 类型方面正常工作(但是它们都不是需要服务 worker 的 React 应用程序)。

最佳答案

如果您注册了一些 Service Worker,就会发生这种情况。如果您打开 Chrome 开发者工具,您可能会收到一些错误。 前往

Chrome Dev Tools -> Application -> Service Worker

如果您看到某个 Service Worker 已注册,那么您必须通过单击它来取消注册它,然后刷新页面并检查。

关于django - 与服务 worker react 生产错误 : invalid MIME type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50990825/

相关文章:

css - react Material 套件 - 无法向标题添加 Logo

nginx - 如何将 Dokku 应用程序指向 dokku 服务器的根域

python - 将 django.request 记录到文件而不是控制台

java - Java/Derby 世界有类似 Django Graphviz 的东西吗?

Django:涉及 OneToOneField 过滤器的相当复杂的查询?

javascript - ReactJS - 选择文件时在文本中呈现文件名

python - 在没有 proxy_pass 的情况下使用 Nginx 服务 Django 站点

javascript - 使用 React testutils 模拟拖放不起作用

Nginx 代理或根据用户代理重写,不带 if

php - Vagrant+Ubuntu 14.04+Nginx+HHVM = 缓慢+崩溃