Problem mit der Integration von React/Vite und Django?
Hallo zusammen,
ich habe ein Problem bei der Integration von Vite und React in mein Django-Projekt. Beim Starten des Django-Servers erhalte ich folgende Fehlermeldung:
TypeError: django_vite.core.asset_loader.DjangoViteConfig() argument after ** must be a mapping, not bool
Ich versuche, Vite als Build-Tool für mein React-Frontend in einem Django-Projekt zu verwenden. Dazu habe ich das django-vite -Paket installiert, um die Integration zu erleichtern. Meine settings.py enthält unter anderem folgende Konfiguration:
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")
STATIC_URL = "/static/"
#STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")]
STATICFILES_DIRS = [
BASE_DIR / "static",
]
DJANGO_VITE = {
"dev_mode": DEBUG,
"manifest_path": str(BASE_DIR / "static" / "manifest.json"),
"static_url_prefix": STATIC_URL,
}
DJANGO_VITE = {
"dev_mode": DEBUG,
"manifest_path": os.path.join(BASE_DIR, "static", "manifest.json"),
"static_url_prefix": STATIC_URL,
}
Gibt es jemanden, der schon mal in dieses Problem gelaufen ist und mir dabei helfen kann?
Vielen Dank schon im vorfeld. :)
1 Antwort
Der Aufbau für dein DJANGO_VITE-Objekt ist nicht richtig.
Das dict erwartet erst einmal nur die Konfigurationsknoten als Einträge (vgl. mit dem Beispiel der Dokumentation). In deinem Fall wäre das nur ein Eintrag für default. Dieser wiederum zeigt auf ein dict mit deinen Einstellungen.
Beispiel:
DJANGO_VITE = {
"default": {
"dev_mode": DEBUG,
""" etc. ... """
}
}
Implizit wird dazu ein DjangoViteConfig-Konstruktoraufruf generiert, bei dem die Anwendung das dict in eine kwargs-Notation konvertiert:
DJANGO_VITE = {
"default": DjangoViteConfig(dev_mode=DEBUG, """ etc. ... """)
}
Bei deiner Konfiguration wird das Programm aber davon ausgehen, dass dev_mode, manifest_path, etc. eigenständige Konfigurationen sind. Beim Auflösen des Werts kommt es dann zum Fehler, denn das Programm stößt nicht auf das erwartete dict, sondern die boolsche Variable DEBUG, die nicht auf kwargs gemappt werden kann.
Des Weiteren sollte eine einmalige Definition von DJANGO_VITE genügen. Mit der zweiten Definition überschreibst du lediglich die Erste.