Javascript 从Webpack2.1.0升级到Webpack4.12.0破坏了我们的构建,为什么?

Javascript 从Webpack2.1.0升级到Webpack4.12.0破坏了我们的构建,为什么?,javascript,html,webpack,webpack-4,Javascript,Html,Webpack,Webpack 4,首先,我要说我是一个网页迷,所以非常感谢你的帮助 所以 我对Js捆绑包的布局是,我们有两个捆绑包: bundle.js tablesbundle.js bundle.js包含我们所有的页面标准javascript。 tablesbundle.js包含datatables.net库 现在,在我们的旧项目中,我们使用了Webpack2.1.0,我们所需要做的就是在布局文件中引用bundle.js,在需要使用datatables.net的任何页面上引用tablesbundle.js,然后在bundl

首先,我要说我是一个网页迷,所以非常感谢你的帮助

所以

我对Js捆绑包的布局是,我们有两个捆绑包:

bundle.js
tablesbundle.js
bundle.js包含我们所有的页面标准javascript。 tablesbundle.js包含datatables.net库

现在,在我们的旧项目中,我们使用了Webpack2.1.0,我们所需要做的就是在布局文件中引用bundle.js,在需要使用datatables.net的任何页面上引用tablesbundle.js,然后在bundle.js中,任何调用来创建datatable的页面都可以正常工作

但是,在移动到webpack 4.12.0后,这将不再有效,它不会选择tablesbundle.js中的datatables initialiser方法,tablesbundle.js中唯一的代码是:

require("datatables.net");
现在,如果我将该行移到bundle.js中,它可以正常工作,但我们不希望每个页面上都有数据表,我们的捆绑js文件似乎没有在捆绑包之间进行通信,但在以前的版本中是这样的

如果有人能解释或帮助,那就太好了

--配置文件--


如果您可以共享webpack.config.js filedone@aseempadhya,那就更好了,因为它可能无法全局识别jquery。尝试添加ProviderPlugin@PlayMa256它确实能够全局识别Jquery,问题是我希望表包能够全局识别,但不能在每个页面上加载
 module.exports = {
    entry: {
        bundle: "./Scripts/index.js",
        libraries: './Scripts/libraries.js',
        datatablesbundle: "./Scripts/tablesBundle.js"
    },
    module: {
        rules: [
            {
                test: /\.css$/,
                use: [
                    MiniCssExtractPlugin.loader,
                    'css-loader'
                ],
            },
            {
                test: /\.sass$|\.scss$/,
                use: [
                    MiniCssExtractPlugin.loader,
                    {
                        loader: 'css-loader',
                        options: {},
                    },
                    { loader: 'postcss-loader' },
                    { loader: 'sass-loader' },
                ],
            },
            {
                test: /\.(jpg|png)$/,
                use: 'file-loader?name=[path][name].[hash].[ext]'
            }
        ],
    },


    plugins: getPlugins(),
    output: {
        path: BUILD_DIR,
        filename: '[name].js'
    },
    //optimization: {
    //    splitChunks: {
    //        chunks: 'all'
    //    }
    //},

    resolve: {
        modules: ["web_modules", "node_modules"],
        alias: {
            jquery: "jquery/src/jquery",
            'picker': 'pickadate/lib/picker'
        }
    }
}

    function getPlugins() {

        var isProd = (process.env.NODE_ENV === 'production');

        var plugins =
            [
                new MiniCssExtractPlugin({
                    filename: "[name].css"
                }),

                new webpack.ProvidePlugin({
                    "window.$": "jquery",
                    $: "jquery",
                    jQuery: "jquery",
                    Popper: "popper.js"
                })
            ];

        if (isProd) {
            plugins.push(
                new UglifyJSPlugin({
                    output: {
                        comments: false,
                        beautify: true,
                        sourceMap: true
                    }
                }));

            plugins.push(
                new OptimizeCssAssetsPlugin({
                    assetNameRegExp: /\.(css|scss|sass)$/,
                    cssProcessorOptions: { discardComments: { removeAll: true } }
                }));

        }

        return plugins;
    }