diff --git a/docs/source/about/changelog.rst b/docs/source/about/changelog.rst index 62e7d47eb..a6eff8f73 100644 --- a/docs/source/about/changelog.rst +++ b/docs/source/about/changelog.rst @@ -23,6 +23,10 @@ more info, see the :ref:`Contributor Guide `. Unreleased ---------- +**Changed** + +- :pull:`1050` - Warn and attempt to fix missing mime types, which can result in ``reactpy.run`` not working as expected. + **Fixed** - :issue:`930` - better traceback for JSON serialization errors (via :pull:`1008`) diff --git a/src/py/reactpy/reactpy/backend/__init__.py b/src/py/reactpy/reactpy/backend/__init__.py index e69de29bb..e08e50649 100644 --- a/src/py/reactpy/reactpy/backend/__init__.py +++ b/src/py/reactpy/reactpy/backend/__init__.py @@ -0,0 +1,22 @@ +import mimetypes +from logging import getLogger + +_logger = getLogger(__name__) + +# Fix for missing mime types due to OS corruption/misconfiguration +# Example: https://github.com/encode/starlette/issues/829 +if not mimetypes.inited: + mimetypes.init() +for extension, mime_type in { + ".js": "application/javascript", + ".css": "text/css", + ".json": "application/json", +}.items(): + if not mimetypes.types_map.get(extension): # pragma: no cover + _logger.warning( + "Mime type '%s = %s' is missing. Please research how to " + "fix missing mime types on your operating system.", + extension, + mime_type, + ) + mimetypes.add_type(mime_type, extension)