Невозможно заставить Django запустить фронтенд из сборки Vite ("был заблокирован из-за запрещенного типа MIME ("text/html")").
Мой фронтенд - это приложение React, которое я скомпилировал с помощью npm run build
. После того, как папка сборки скопирована в проект django, я захожу в свой Django virtualenv и запускаю python3 manage.py collectstatic
и python3 manage.py runserver
Когда я запускаю сервер, я могу прочитать две ошибки в консоли:
Loading module from “http://127.0.0.1:8000/assets/index-sLPpAV_Z.js” was blocked because of a disallowed MIME type (“text/html”).
The resource from “http://127.0.0.1:8000/assets/index-6ReKyqhx.css” was blocked due to MIME type (“text/html”) mismatch (X-Content-Type-Options: nosniff).
и одно предупреждение:
Loading failed for the module with source “http://127.0.0.1:8000/assets/index-sLPpAV_Z.js”.
(Django) settings.py
STATIC_URL = 'static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'build/static'),
]
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
package.json
...
"scripts": {
"dev": "vite",
"build": "rm -rf ../backend/build && tsc && vite build && cp -r build ../backend/build",
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0",
"preview": "vite preview"
},
...
Я запутался, потому что в папке сборки нет папки static. Django выдает мне следующее предупреждение:
WARNINGS:
?: (staticfiles.W004) The directory '/home/user/project/backend/build/static' in the STATICFILES_DIRS setting does not exist.
Папка сборки выглядит следующим образом:
build/
----assets/
--------index-<randomString>.css
--------index-<anotherString>.js
----index.html
----vite.svg
Примечание: я запускаю все локально