J'essaie de configurer le routage de réaction qui fonctionne lorsque je clique sur quelque chose sur mon site. La route fonctionne. Toutefois, si j'ouvre un nouvel onglet et copie cet URL Je reçois
Refused to execute script from 'http://localhost:8080/something/index_bundle.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.
webpack.config
const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
module.exports = {
entry: "./src/index.js",
output: {
path: path.join(__dirname, "/dist"),
filename: "index_bundle.js"
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: "babel-loader"
}
},
{
test: /\.s?css$/,
use: [
{
loader: "style-loader" // creates style nodes from JS strings
},
{
loader: "css-loader" // translates CSS into CommonJS
},
{
loader: "sass-loader" // compiles Sass to CSS
}
]
}
]
},
plugins: [
new HtmlWebpackPlugin({
template: "./src/index.html"
})
],
devServer: {
historyApiFallback:{
index:'/dist/index.html'
},
}
};
index.js
import React from 'react';
import ReactDOM from 'react-dom';
import { Provider } from 'mobx-react';
import { useStrict } from 'mobx';
import createBrowserHistory from 'history/createBrowserHistory';
import {syncHistoryWithStore } from 'mobx-react-router';
import { Router } from 'react-router'
import AppContainer from './components/App';
const browserHistory = createBrowserHistory();
import stores from '../src/stores/Stores';
const history = syncHistoryWithStore(browserHistory, stores.routingStore);
ReactDOM.render(
<Provider {... stores}>
<Router history={history}>
<AppContainer />
</Router>
</Provider>,
document.getElementById('app')
);
magasins
import {RouterStore} from 'mobx-react-router';
const routingStore = new RouterStore();
const stores = {
routingStore
}
export default stores;
J'ai aussi essayé historyApiFallback: true
Votre configuration de pack Web est mal formée . Ainsi, votre devServer renvoie le fichier HTML de secours au lieu du paquet.
D'où la raison pour laquelle le script est servi avec le type MIME ('text/html').
devServer: {
historyApiFallback:{
index:'/dist/index.html'
},
}
Vous avez probablement voulu dire quelque chose comme ça:
devServer: {
historyApiFallback: true
}
Il suffit de modifier la configuration Webpack en modifiant ceci:
devServer: {
historyApiFallback: true
}
Et ajoutez également ceci à public/index.html:
<base href="/" />
Cela devrait faire l'affaire..
Peut-être que vous pointez incorrectement
<script src="utils.js"></script> // NOT ok. Refused to execute script..MIME
<script src="js/utils.js"></script> // OK
J'ai la même erreur exacte et découvre que je dois changer mon script dans
index.html
de
<script src="App.js"></script>
à
<script src="/App.js"></script>
donc si vous avez un "." ou rien devant votre fichier, remplacez-le simplement par "/". J'espère que cela vous aide ou aide quelqu'un d'autre.
Cela peut également être causé si la propriété contentBase
n'est pas définie correctement. Cela nous est venu en ce sens que nous demandions un fichier JS, mais obtenir une 404 et la "page" 404 servies par webpack-dev-server revient sous la forme text/html
.
J'ai récemment dû ajouter ce qui suit aux en-têtes dans le cadre d'une résolution d'audit de sécurité
X-Content-Type-Options: nosniff
Après cela, j'ai commencé à avoir ces erreurs. Je suis encore à trouver une solution permanente pour cela. Les pages semblent bien fonctionner. Le bruit dans la console est juste énervant!