私はサイト上の何かをクリックするとルートが機能するリアクションルーティングをセットアップしようとしていますが、新しいタブを開いてそのURLをコピーすると。私は得る
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')
);
店舗
import {RouterStore} from 'mobx-react-router';
const routingStore = new RouterStore();
const stores = {
routingStore
}
export default stores;
私も試してみましたhistoryApiFallback: true
Webpackの構成が正しくありません。そのため、devServerはバンドルではなくフォールバックHTMLファイルを返します。
したがって、スクリプトが( 'text/html')MIMEタイプで提供される理由。
devServer: {
historyApiFallback:{
index:'/dist/index.html'
},
}
あなたはおそらく次のようなものを意味しました:
devServer: {
historyApiFallback: true
}
これを編集してwebpack configを編集するだけです:
devServer: {
historyApiFallback: true
}
また、これをpublic/index.htmlに追加します。
<base href="/" />
これでうまくいくはずです。
たぶんあなたは間違って指している
<script src="utils.js"></script> // NOT ok. Refused to execute script..MIME
<script src="js/utils.js"></script> // OK
私は最近、セキュリティ監査の解決の一環として、ヘッダーに次を追加する必要がありました
X-Content-Type-Options: nosniff
その後、これらのエラーが発生し始めました。これに対する永続的な解決策はまだわかりません。しかし、ページは機能しているようです。コンソールのノイズはうっとうしいです!
まったく同じエラーが発生し、スクリプトを変更する必要があることがわかりました
index.html
から
<script src="App.js"></script>
に
<script src="/App.js"></script>
「。」がある場合またはファイルの前に何もない場合は、単に「/」に置き換えてください。これがあなたや他の誰かに役立つことを願っています。
私の場合、ビルドプロセスが実際にJavaScriptバンドルをビルドしなかったため、この問題が発生しました。
ビルドはエラー(!)ではなく警告を発しただけなので、この問題はビルドがステージングされたデプロイメント環境にプッシュされたときにのみ検出されました。
したがって、この問題を解決するために、バンドルがビルドされないという問題を修正しました。
これを引き起こす可能性があるもう1つのことは、contentBase
プロパティが正しく設定されていない場合です。これは、JSファイルを要求していたが、webpack-dev-serverによって提供される404および404「ページ」がtext/html
。