【问题标题】:Webpack ProvidePlugin and Global variablesWebpack 提供插件和全局变量
【发布时间】:2017-08-22 18:55:24
【问题描述】:

我对 webpack 非常陌生,我注意到的第一件事是我可以将 jquery 包装在下面,这样它就可以在我的 javascript 中全局使用,这很可爱。我想使用我使用的其他框架来执行此操作,例如 moment、accounting 以及我需要使用的任何插件,例如 jQuery UI。

天真,没有正确阅读 webpack,我只是尝试了以下方法,但它似乎不起作用:

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

module.exports = {
    entry: './src/js/config.js',
    output: {
        path: path.resolve(__dirname, 'public/js'),
        filename: 'main.build.js'
    },
    plugins: [
        new webpack.ProvidePlugin({
            $: 'jquery',
            accounting: 'accounting',
            moment: 'moment'
            // jQuery: './src/vendor/jquery/dist/jquery.min',
            // jqueryui : './src/vendor/jquery-ui/jquery-ui.min',
            // listjs: './src/vendor/list.js/dist/list.min',
            // moment: './src/vendor/moment/min/moment.min',
            // nouislider: './src/vendor/nouislider/distribute/nouislider.min',
            // accounting: './src/js/plugins/accounting',
            // imagesLoaded: './src/vendor/imagesloaded/imagesloaded.pkgd.min',
            // parsley: './src/vendor/parsleyjs/dist/parsley.min',
            // urlQuery: './src/vendor/domurl/url.min'
        }),
        new webpack.ContextReplacementPlugin(/\.\/locale$/, 'empty-module', false, /js$/)
    ],
    module: {
        loaders: [
            {
                test: /\.js$/,
                loader: "babel-loader",
                query: {
                    presets: [ "babel-preset-es2015" ].map(require.resolve)
                }
            }
        ]
    },
    stats: {
        colors: true
    },
    devtool: 'source-map'
};

这完全是我的傲慢,但真的希望有人能提供帮助,因为让这些东西在全球范围内可用而不必将其导入某些文件真的很好,我正在尝试将整个前端 js 堆栈转换为es6 模块。

提前致谢!

【问题讨论】:

  • 在通过 NPM 安装 moment 后,它现在实际上可以工作了,但是在浏览器中我得到 'Uncaught TypeError: Cannot set property 'moment' of undefined' - 非常感谢任何帮助!

标签: webpack momentjs


【解决方案1】:

经过一番摆弄之后,它确实工作得很好。一旦通过 npm 安装了 moment,这很棒。

【讨论】:

  • 需要注意的是,您需要通过 npm 安装它(它应该驻留在您的 node_modules 中)并具有正确的大小写 moment: 'moment'
猜你喜欢
  • 1970-01-01
  • 2019-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-22
  • 2016-10-06
  • 1970-01-01
相关资源
最近更新 更多