Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Webpack2加载、公开和绑定jquery和引导_Javascript_Jquery_Twitter Bootstrap_Webpack_Webpack 2 - Fatal编程技术网

Javascript Webpack2加载、公开和绑定jquery和引导

Javascript Webpack2加载、公开和绑定jquery和引导,javascript,jquery,twitter-bootstrap,webpack,webpack-2,Javascript,Jquery,Twitter Bootstrap,Webpack,Webpack 2,这是一个零碎的问题,但似乎没有人能够确定答案。 我非常简单地尝试绑定jquery然后引导,并将$、jquery和bootstrap全局公开 这是我的webpack.config.js var webpack = require('webpack'); module.exports = { entry: { accountdetails: './src/main/webapp/public/js/accountdetails.js', vendor_jqu

这是一个零碎的问题,但似乎没有人能够确定答案。 我非常简单地尝试绑定jquery然后引导,并将
$
jquery
bootstrap
全局公开

这是我的webpack.config.js

var webpack = require('webpack');

module.exports = {
    entry: {
        accountdetails: './src/main/webapp/public/js/accountdetails.js',
        vendor_jquerybs: ['jquery', 'bootstrap']
    }
    ,
    module:{
        loaders: [{
            test: /\.jsx?$/,
            exclude: /node-modules/,
            loader: 'babel-loader'
        }]
    },
    resolve: {
        extensions: ['.js', '.jsx']
    },
    output: {
        path: __dirname + '/src/main/webapp/public/js/dist',
        publicPath: '/',
        filename: '[name].bundle.js'
    },
    devServer: {
        contentBase: './dist'
    }
};
这件衣服捆扎得很好。它作为我的第一个
加载到
但我遇到了诸如“$未定义”、“jQuery未定义”之类的控制台问题

如何编写此配置以全局公开jQuery/$和引导?网页包文档会说,
CommonChunksPlugin
公开加载程序
,等等。这样做的最佳方式是什么?我被文件弄糊涂了

多谢各位

在这里找到了答案

该模块是expose loader,显然需要将对象、类等公开给窗口

module: {
  rules: [{
          test: require.resolve('jquery'),
          use: [{
              loader: 'expose-loader',
              options: 'jQuery'
          },{
              loader: 'expose-loader',
              options: '$'
          }]
      }]
}
注意:如果我错了,请纠正我,但是没有必要全局公开引导。jQuery就足够了

现在完全配置:

var webpack = require('webpack');

module.exports = {
    entry: {
        accountdetails: './src/main/webapp/public/js/accountdetails.js',
        vendor_jquerybs: ['jquery', 'bootstrap']
    }
    ,
    module:{
        loaders: [
            {
            test: /\.jsx?$/,
            exclude: /node-modules/,
            loader: 'babel-loader'
            },
            {
            test: require.resolve('jquery'),
            use: [{
                loader: 'expose-loader',
                options: 'jQuery'
                },
                {
                loader: 'expose-loader',
                options: '$'
                }]
            }
        ]
    },
    resolve: {
        extensions: ['.js', '.jsx']
    },
    output: {
        path: __dirname + '/src/main/webapp/public/js/dist',
        publicPath: '/',
        filename: '[name].bundle.js'
    },
    devServer: {
        contentBase: './dist'
    }
};

注意:您不能从入口点删除“jquery”。

在我的例子中,我也不需要全局公开引导(插件)。我的错误是,当插件也需要
jQuery
时,我只公开了
$