Troubleshooting#

Disallowed MIME type error on Windows#

Apparently Windows system-wide MIME type configuration sometimes won’t load up JavaScript modules in certain browsers. The errors would be something like Loading module from “http://127.0.0.1:8000/static/js/unicorn.js” was blocked because of a disallowed MIME type (“text/plain”) or Failed to load module script: The server responded with a non-JavaScript MIME type of "text/plain".

One suggested solution is to add the following to the bottom of the settings file:

# settings.py

if DEBUG:
    import mimetypes
    mimetypes.add_type("application/javascript", ".js", True)

See this Windows MIME type detection pitfalls article, this StackOverflow answer, or issue #201 for more details.

Missing CSRF token or 403 Forbidden errors#

Unicorn uses CSRF to protect its endpoint from malicious actors. The two parts that are required for CSRF are "django.middleware.csrf.CsrfViewMiddleware" in MIDDLEWARE and {% csrf_token %} in the template that includes any Unicorn components.

# settings.py

...
MIDDLEWARE = [
    ...
    "django.middleware.csrf.CsrfViewMiddleware",
    ...
]
<!-- template.html -->
{% load unicorn %}

<html>
  <head>
    {% unicorn_scripts %}
  </head>
  <body>
    {% csrf_token %}

    {% unicorn 'hello-world' %}
  </body>
</html>