Отказано в выполнении сценария из «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 тоже не работает.
Как выглядит ваш серверный код? Я видел эту ошибку, когда у меня был X-Content-Type-Options: nosniff в заголовках ответов. Если вы перейдете к инструментам разработчика и посмотрите запрос на /edit/bundle.js, каков тип содержимого для ответа? А есть комплект X-Content-Type-Options?
Я была такая же проблема. Это решение SO у меня работал.





Попробуйте изменить
<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
тип должен быть
application/javascript, а неtext/javascript.