webpack 4 config,重新加载页面崩溃

时间:2018-06-12 19:24:02

标签: webpack webpack-dev-server

尝试迁移到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,
    },
};
};

2 个答案:

答案 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