webpack 代码拆分 - 创建一个额外的 bunlde: 0.bundle.js

Posted

技术标签:

【中文标题】webpack 代码拆分 - 创建一个额外的 bunlde: 0.bundle.js【英文标题】:webpack code splitting - creates an extra bunlde: 0.bundle.js 【发布时间】:2018-02-24 19:02:30 【问题描述】:

我有以下 webpack 配置:

const path = require('path');
const webpack = require('webpack');
const CleanWebpackPlugin = require('clean-webpack-plugin');

module.exports = 
    entry: 
        source1: './frontend/source1.js',
        source2: './frontend/source2.js'
    ,
    output: 
        filename: '[name].bundle.js',
        path: path.resolve(__dirname, 'static/bundles')
    ,
    plugins: [
        new CleanWebpackPlugin(['static/bundles'])
    ],
    module: 
        rules: [
            
                test: /\.vue$/,
                loader: 'vue-loader', //  для .vue-файлов
                options: 
                    loaders: 
                    
                    // other vue-loader options go here
                
            ,
            
                test: /\.js$/,
                exclude: /node_modules/,
                loader: "babel-loader"
            
        ]
    ,
    resolve: 
        alias: 
            vue$: 'vue/dist/vue.esm.js'
        
    
;

当我运行 webpack 时,我希望它生成两个文件:source1.bundle.jssource2.bundle.js

但它也会产生一个神秘的0.bundle.js 并将其放在与其他文件相同的目录中。

然后当我打开浏览器时出现错误:

因为我的包是从一个单独的绝对/static/bundles/ 目录加载的,而这个0.bundle.js 正试图从当前页面而不是/static/bundles/ 加载。这个文件是什么,如何指定加载路径?

【问题讨论】:

您有解决方案吗?我也面临同样的问题 【参考方案1】:

我相信你会想要在 webpack 配置中添加一个 publicPath。就在您实际阅读它们的任何地方。 output: filename: 'bundle.js', path: path.resolve(__dirname, 'public/dist'), publicPath: './dist/' ,

【讨论】:

以上是关于webpack 代码拆分 - 创建一个额外的 bunlde: 0.bundle.js的主要内容,如果未能解决你的问题,请参考以下文章

Webpack 代码拆分影响 Web 性能

如何禁用 webpack 4 代码拆分?

为啥 webpack 代码拆分对我不起作用?

使用 webpack 代码拆分,如何加载块和 HTML 布局?

如何使用 Webpack 代码拆分处理部署?

Webpack 在目标节点时忽略代码拆分