Тип MIME ('text / html') не является исполняемым, и включена строгая проверка типа MIME

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

Я использую реактивный маршрутизатор, и у меня возникла эта ошибка при использовании

<Route path = "/edit/:id" component = {EditExpensePage} />

он отлично работает с просто / edit, но выдает ошибку / edit /: id. Я не понимаю, почему это происходит. Вот файлы: Это файл AppRouter.

import React from 'react';
import ReactDOM from 'react-dom';
import { BrowserRouter, Route, Switch, Link, NavLink } from 'react-router-dom';
import Header from './../components/Header';
import ExpenseDashboardPage from './../components/ExpenseDashboardPage';
import AddExpenses from './../components/AddExpensePage';
import EditExpensePage from './../components/EditExpensePage';
import NotFoundPage from './../components/NotFoundPage';
import HelpPage from './../components/HelpPage';

const AppRouter = () => (
  <BrowserRouter>
  <div>
    <Header />
    <Switch>
      <Route path = "/" component = {ExpenseDashboardPage} exact = {true} />
      <Route path = "/create" component = {AddExpenses} />
      <Route path = "/edit/:id" component = {EditExpensePage} />
      <Route path = "/help" component = {HelpPage} />
      <Route component = {NotFoundPage} />
    </Switch>
  </div>
</BrowserRouter>
);

export default AppRouter;

Это файл EditExpenses:

import React from 'react';

const EditExpensePage = (props) => {
  console.info(props);
  return (
    <div>
      <p>Edit your expenses Here</p>
    </div>
  );  
}

export default EditExpensePage;

Вот мой файл конфигурации Webpack:

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');

module.exports = {
  entry: './src/app.js',
  output: {
    path: path.join(__dirname, 'public'),
    filename: 'bundle.js'
  },
  module: {
    rules: [{
    test: /\.js$/,
    exclude: /node_modules/,
    use: {
      loader: 'babel-loader'
      }
    }, {
      test: /\.s?css$/,
      use: [
        'style-loader',
        'css-loader',
        'sass-loader'
      ]
    }]
  },
  plugins: [
    new HtmlWebpackPlugin({
      template: './src/index.html'
    })
  ],
  devtool: 'cheap-module-eval-source-map',
  devServer: {
    historyApiFallback: true
  }
}

А также файл index.html, созданный новым HtmlWebpackPlugin

<!DOCTYPE html>
<html>
<head>
  <meta charset = "utf-8" />
  <meta http-equiv = "X-UA-Compatible" content = "IE=edge">
  <title>Expensify</title>
  <meta name = "viewport" content = "width=device-width, initial-scale=1">
</head>
<body>
  <div id = "app"></div>
  <script type = "text/javascript" src = "bundle.js"></script>
</body>
</html>

Пожалуйста, помогите мне решить эту проблему.

тип должен быть application/javascript, а не text/javascript.

Sulthan 02.04.2018 21:37

Нет, с application/javascript тоже не работает.

kamal11 03.04.2018 15:12

Как выглядит ваш серверный код? Я видел эту ошибку, когда у меня был X-Content-Type-Options: nosniff в заголовках ответов. Если вы перейдете к инструментам разработчика и посмотрите запрос на /edit/bundle.js, каков тип содержимого для ответа? А есть комплект X-Content-Type-Options?

Anthony N 08.04.2018 18:04

Я была такая же проблема. Это решение SO у меня работал.

Matt Hahn 17.09.2018 21:49
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
4
4
21 935
5

Ответы 5

Попробуйте изменить

<script type = "text/javascript" src = "bundle.js"></script>

К

<script type = "text/javascript" src = "/bundle.js"></script>

Попробуйте изменить webpack.config.js добавить publicPath

output: {
   path: path.join(__dirname, 'public'),
   filename: 'bundle.js',
   publicPath: '/',        
}

Проверьте вкладку сети в DevTools, чтобы узнать, какой путь к запрошенному сетевому активу, который возвращается как text / html, затем попробуйте загрузить его в обычном веб-браузере.

В моем случае это было сообщение об ошибке, а не возвращение javascript, следовательно, неправильный mimeType.

Пакет не удалось собрать по другой причине (ошибка TypesScript в моем случае), и devServer возвращал ошибку, а не файл js, которого ожидало приложение.

Добавление общедоступного пути в вывод webpack.config.js работает:

output: {
      path: `${__dirname}/dist`,
      filename: 'bundle.js',
      publicPath: '/',
    }

Может быть из-за множества разных проблем, моя была решена этим (хотя в другом моем приложении этого не требовалось ...) загрузка файла bundle.js из веб-пакета изменяет тип mime на text / html

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