尝试迁移到webpack 4(从3开始)。
我尝试过一个非常基本的配置,它在运行webpack-dev-server --mode development
时工作正常,但是当我进入admin子页面(localhost:3000 / admin / test)并重新加载页面时,它会崩溃。它想在/admin/main.js中找到main.js文件,但它位于/main.js中。
收到以下错误:
Refused to execute script from 'http://localhost:3000/admin/main.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.
有什么想法吗?
const path = require("path");
const HtmlWebPackPlugin = require("html-webpack-plugin");
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const devMode = process.env.NODE_ENV !== 'production'
module.exports = (env) => {
return {
entry: { main: './src/index.js' },
output: {
path: path.resolve(__dirname, 'dist'),
filename: 'main.js'
},
module: {
rules: [
{
test: /\.js$/,
exclude: /node_modules/,
use: {
loader: "babel-loader"
}
},
{
test: /\.html$/,
use: [
{
loader: "html-loader",
options: {minimize: true}
}
]
},
{
test: /\.(scss|css)$/,
use: [
devMode ? 'style-loader' : MiniCssExtractPlugin.loader,
'css-loader'
],
},
{
test: /\.(png|jpg|gif)$/,
use: [
{
loader: 'file-loader',
options: {
name: "[path][name].[hash].[ext]",
}
}
]
}]
},
plugins: [
new HtmlWebPackPlugin({
template: "./public/index.html",
filename: "./index.html"
}),
new MiniCssExtractPlugin({
filename: devMode ? '[name].css' : '[name].[hash].css',
chunkFilename: devMode ? '[id].css' : '[id].[hash].css',
}),
],
devtool: devMode ? 'cheap-module-eval-source-map' : 'source-map',
devServer: {
contentBase: path.join(__dirname, 'public'),
historyApiFallback: true,
},
};
};
答案 0 :(得分:1)
Webpack在 dist / 文件夹中生成 main.js 文件。您的子页面在 admin / 文件夹中请求它。打开代表此页面的 HTML 文件并更改路径。
答案 1 :(得分:0)
我将inject: false
添加到我的HtmlWebPackPlugin:
new HtmlWebPackPlugin({
inject: false,
template: "./public/index.html",
filename: "./index.html"
}),
并在index.html文件中包含main.js
: