Ошибка браузера React (тип MIME не исполняемый)

Я следую базовому руководству по приложению React, и у меня возникла эта ошибка в браузере.

"Отказался выполнить скрипт из 'http: // локальный: 8080 / bundle.js', потому что его тип MIME ('text / html') не является исполняемым, и включена строгая проверка типа MIME ".

Я не могу найти в Интернете поддержку по этой ошибке и хотел бы понять, в чем проблема. Я потратил около 2 часов на отладку. На одном форуме упоминалось, что это файлы cookie в браузере, но проблема не в этом. Я считаю, что это может быть связано с моим файлом index.html:

<!DOCTYPE html>
<html lang = "en">
  <head>
    <meta charset = "UTF-8">
    <title>ReactJS Sample Project</title>
  </head>
  <body>
    <div id = "root"></div>
    <script type = "text/javascript" src = "bundle.js"></script>
  </body>
</html>

Дайте мне знать, если у вас есть идеи! Я относительно новичок в программировании, и мне неприятно зайти в тупик на столь ранней стадии проекта.

Используемый вами локальный сервер разработки не отправляет правильные типы MIME. Какой сервер вы используете?

Tamas Hegedus 29.03.2018 10:19

Вы должны включить «Cross Origin Resource Sharing» (CORS) на своем сервере.

Thananjaya S 29.03.2018 10:21

@ThananjayaChakravarthy - Нет! Это полная чушь. Сообщение об ошибке не имеет ничего общего с CORS. Все URL-адреса в коде имеют происхождение одно и тоже.

Quentin 29.03.2018 10:24

Возможный дубликат Как использовать Tesseract.js в приложении React

Badrush 04.04.2019 17:39
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
4
2 504
4

Ответы 4

Браузер просит сервер предоставить ему bundle.js.

Затем сервер отвечает: «Вот bundle.js, это HTML-документ».


Это означает одно из двух:

  1. Это HTML-документ (с нечетным URL-адресом).
  2. Это JS-файл, но сервер думает, что это HTML.

Первое, что нужно сделать, это посмотреть данные в файле. Вы можете сделать это, просмотрев вкладку «Сеть» в инструментах разработчика в своем браузере.

Если это JS, вам необходимо исправить свой сервер, чтобы он отправлял правильный заголовок Content-Type для JavaScript (application/javascript).

Если это не JS, вам нужно выяснить, почему. Возможно, у вас неправильный URL. Возможно, сервер не настроен для обслуживания вашего JS.

Какой бы ни была проблема, вам нужно будет исследовать свой HTTP-сервер больше, чем клиентский код, который вы указали в вопросе.

Привет, Квентин, Спасибо за ответ, я очень ценю помощь! Я попытался посмотреть вкладку «Сеть», но она пуста. Я попытался изменить свой тег скрипта с text / javascript на application / javascript, но он по-прежнему дает ту же ошибку. Я заметил одну вещь: у меня нет создаваемого файла webpack.config.js, и я не уверен, почему. Для справки, я следил за этой демонстрацией codeburst.io/…. Еще раз извиняюсь, если мой вопрос расплывчатый.

maxwell3739 29.03.2018 10:39

«Я попытался посмотреть вкладку« Сеть », но она пуста». - ‚Он должен быть открыт при отправке запроса (и не настроен для скрытия типа запроса, который вы ищете).

Quentin 29.03.2018 11:12

«Я попытался изменить тег сценария с text / javascript на application / javascript» - оставьте тег сценария в покое. Вам нужно посмотреть на HTTP-сервер.

Quentin 29.03.2018 11:12

Если вы разрабатываете одностраничное приложение HTML5, скорее всего, сервер по умолчанию настроен на отправку index.html обратно для всех ресурсов, которые не найдены, вместо 404, чтобы разрешить полное обновление страницы для каждого виртуального пути в вашем приложении. Теперь, если bundle.js нет по какой-либо причине, вы получите правильный ответ в формате html. Вы должны отладить свое приложение или, по крайней мере, сообщить нам более подробную информацию о том, что вы используете.

Чтобы отладить приложение, откройте инструменты разработчика, перейдите на панель сети и обновите страницу, чтобы увидеть загружаемые ресурсы.

Эта проблема возникает, когда используется менеджер пакетов, например npm. Следующий ответ о переполнении стека решил для меня проблему. Вам нужно просто использовать ссылку CDN на библиотеку с помощью тега.

Как использовать Tesseract.js в приложении React

Если вы откроете вкладку «Сеть» в инструментах разработчика и посмотрите на ошибку (может быть, на вкладке «Заголовки» в сети), какой URL-адрес вы видите, что он пытается получить файл bundle.js. Ответ может заключаться в простом префиксе bundle.js с косой чертой (т. Е. Src = "/ bundle.js"), если вы используете маршрутизацию на стороне клиента.

Другие вопросы по теме