JavaScript WindowsLinuxmacOS

JavaScript: модуль не импортируется в браузере из-за неверного MIME-типа

  • Обновлено
  • Чтение ≈ 3 минуты

Краткий ответ

Браузер не загружает модуль JavaScript из-за неверного Content-Type: проверьте путь, фактическое тело ответа и сопоставление MIME на сервере.

В этой статье
  1. Что происходит и как распознать неисправность
  2. Как отличить причины
  3. Пошаговая диагностика и исправление
  4. Команды и примеры для проверки
  5. Как проверить результат и что делать дальше

#Что происходит и как распознать неисправность

Для <script type="module"> браузер строго проверяет MIME-тип ответа. Если сервер прислал text/html, text/plain или application/octet-stream вместо JavaScript-совместимого типа (обычно text/javascript), модуль блокируется. Особенно часто HTML приходит при ошибке 404 или маршрутизации в index.html.

#Как отличить причины

Возможная причинаКак узнатьЧто делать
Файл не найден и вместо него HTMLСервер отдаёт страницу ошибки или SPA fallback по пути скрипта.В ответе HTML и Content-Type text/html.Исправьте src, каталог сборки и маршруты.
Не задан MIME для .mjsФайл реально существует, но сервер отдаёт text/plain или octet-stream.Ответ содержит исходный JS, статус 200.Настройте text/javascript для .mjs/.js.
Неправильный импорт из другого адресаВнутренний import указывает на HTML-страницу или файл без расширения.Главный модуль грузится, ошибка относится к вложенному URL.Исправьте путь импорта и настройки сборщика.

#Пошаговая диагностика и исправление

  1. Найдите точный адрес отклонённого модуляОткройте страницу, нажмите F12 → «Консоль» и прочитайте полное сообщение о strict MIME type checking. Скопируйте путь проблемного файла, затем во вкладке «Сеть» (Network) найдите этот запрос. Если сообщение относится к импортированному файлу, исправляйте его, а не только src главного тега.
  2. Проверьте статус и реальный Content-TypeНажмите на запрос → «Заголовки» и посмотрите Status Code и Response Headers. При 404 сначала исправляйте путь, а не MIME. При статусе 200 откройте «Ответ»: если там HTML страницы, сервер выдал fallback, а не нужный JS.
  3. Проверьте реальное расположение сборкиОткройте в редакторе index.html и найдите <script type="module" src="...">, а также относительные import "./...". Сравните регистр букв и папки с фактическими файлами на сервере. На Linux регистр имён важен: Utils.js и utils.js различаются. После исправления обновите страницу с отключённым кэшем в DevTools.
  4. Уточните тип файла, который отдаёт серверЕсли файл есть и содержит JavaScript, но Content-Type неверный, проверьте настройки раздачи статики: веб-сервер должен выдавать для .js и .mjs совместимый JavaScript MIME, рекомендованный text/javascript. Не задавайте его для всех файлов сайта и не отключайте строгую проверку браузера.
  5. При Nginx проверьте настройки и конфигурацию MIMEЕсли сервер на Nginx, убедитесь, что глобальный блок http подгружает mime.types, а для используемого .mjs есть подходящее правило. Перед изменением сделайте копию конфигурации, выполните nginx -t в терминале администратора; только при успешном тесте применяйте перезагрузку по установленной процедуре. Если сервер чужой — передайте администратору URL и заголовки.
  6. Отдельно проверьте SPA-маршрутизацию и проксиЕсли по адресу /assets/app.js отображается ваш HTML-шаблон, перенаправление всех неизвестных адресов на index.html настроено слишком широко. Добавьте обработку реально существующих статических ресурсов перед fallback. Повторите запрос к скрипту в новой вкладке и убедитесь, что возвращается код JS, а не страница сайта.
  7. Проверьте вложенные импорты и откатПерезагрузите сайт с открытой «Сеть», проверьте, что каждый модуль получает код 200 и совместимый Content-Type, а ошибок импорта в консоли нет. Если после изменения веб-сервера стали неверно отдаваться CSS/JSON, восстановите исходную конфигурацию из копии и исправьте только соответствующее MIME-правило.

#Команды и примеры для проверки

Текст
Это HTML-разметка, а не команда в консоли JavaScript; поместите её в HTML проекта с реальным адресом файла.
<script type="module" src="/assets/app.js"></script>

#Как проверить результат и что делать дальше

Скрипт type=module загружается без ошибки strict MIME type; все вложенные импорты получают JavaScript-код, а не HTML. Коды 404/403 и сбои сборки решайте отдельно.

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.