我正在尝试设置反应路由,当我点击我的网站上的某些内容时路由可以正常工作,但是如果我打开一个新选项卡并复制该网址。我得到了
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
答案 0 :(得分:7)
只需编辑以下内容即可编辑webpack配置:
devServer: {
historyApiFallback: true
}
并将此添加到public / index.html:
<base href="/" />
这应该可以解决问题..
答案 1 :(得分:6)
您的网络包配置格式错误。 所以你的devServer返回了后备html文件而不是bundle。
因此脚本以('text / html')MIME类型提供。
devServer: {
historyApiFallback:{
index:'/dist/index.html'
},
}
你可能意味着这样的事情:
devServer: {
historyApiFallback: true
}
答案 2 :(得分:4)
也许你指的不正确
<script src="utils.js"></script> // NOT ok. Refused to execute script..MIME
<script src="js/utils.js"></script> // OK
答案 3 :(得分:0)
我最近不得不将以下内容添加到标头中,作为安全审核解决方案的一部分
X-Content-Type-Options: nosniff
之后我开始收到这些错误。我还没有想出一个永久性的解决方案。这些页面似乎正在起作用。控制台中的噪音很烦人!
答案 4 :(得分:0)
可能导致此问题的另一件事是,如果contentBase
属性设置不正确。之所以出现这种情况,是因为我们请求一个JS文件,但是得到一个404,webpack-dev-server服务的404“页面”又以text/html
的形式返回。
答案 5 :(得分:0)
我遇到了相同的确切错误,发现我需要在
中更改脚本index.html
来自
<script src="App.js"></script>
到
<script src="/App.js"></script>
如果您有一个“。”或文件前没有任何内容,只需将其替换为“ /”即可。希望对您或其他人有帮助。
答案 6 :(得分:0)
就我而言,我遇到了此问题,因为构建过程实际上并未构建JavaScript捆绑包。
该构建仅发出警告而不是错误(!),因此仅当将该构建推送到分阶段部署环境时才发现此问题。
因此,要解决此问题,我已解决了无法构建捆绑软件的问题。