Webpack 拆分块未被执行

Webpack split chunks aren't being executed

我创建了一个 webpack 配置,它有三个入口点,我试图在捆绑时拆分它们。下面是我的 webpack.config.js

var path = require('path');
var webpack = require('webpack');

module.exports = {
    mode: "development",
    optimization: {
        splitChunks: {
            chunks: "all"
        }
    },
    context: path.resolve('js'),
    entry: {
        about: './about_page.js',
        home: './home_page.js',
        contact: './contact_page.js'
    },
    output: {
        path: path.resolve('build/js/'),
        publicPath: '/public/assets/js/',
        filename: "[name].js"
    },
    devServer: {
        contentBase: 'public'
    },
    module: {
        rules: [
            {
                enforce: "pre",
                test: /\.js$/,
                exclude: /node_modules/,
                loader: "eslint-loader",
                options: {
                    configFile: ".eslint.json"
                }
            },
            {
                test: /\.es6$/,
                exclude: /node_modules/,
                loader: "babel-loader"
            }
        ]
    },
    resolve: {
        extensions: ['.js', '.es6']
    },
    watch: true
}

我在 HTML 中包含了以下脚本(其中 home.js 已替换为其他相关文件名)。我收到 shared.js 不存在的错误消息。

<script src="/public/assets/js/shared.js"></script>
<script src="/public/assets/js/home.js"></script>

在 chrome 中检查我的页面时,我能够看到单独的 javascript 文件及其内容,但正在执行其中的 none 代码。每个文件当前都有一个未被记录的控制台日志。但我已经尝试添加调试器并写入页面,但仍然没有任何结果。

您的问题似乎与您在 html.

中要求构建 js 文件的方式有关
    output: {
        path: path.resolve('build/js/'),
        publicPath: '/public/assets/js/',
        filename: "[name].js"
    }

public 路径不是用于 JS 文件,而是用于 static content like images and logos。您的 JS 文件按预期在 build/js/ 下生成。将您的 html 更新为

<script src="./build/js/shared.js"></script>
<script src="./build/js/home.js"></script>

这应该会按预期工作。

您假设共享块将被称为 "shared.js",这是错误的。

将您的配置修改为:

optimization: {
    splitChunks: {
        chunks: "all",
        name: "shared"
    }
},

现在您的代码可以运行了。