在Webpack 4中全局包括其他jQuery插件

伦敦AppDev

我正在尝试使用Webpack 4使内联JavaScript可以访问jQuery插件。

我正在使用PluginProvider使jQuery可用于我的网站:

  plugins: [
    new webpack.ProvidePlugin({
      "$": "jquery",
      "jQuery": "jquery"
    }),
  ],

这工作正常,我可以从包含我的捆绑软件的任何页面访问jQuery。

我试图通过创建一个包含以下内容的捆绑包来添加bootstrap-datepickervendor.js

import 'bootstrap-datepicker';

我可以$('input').datepicker()vendor.js捆绑包中调用,但是如果尝试使用内联调用它,则会<script>得到:

Uncaught TypeError: $(...).datepicker is not a function

如何配置Webpack 4以使其bootstrap-datepicker可用于全局范围?


更新

我已在此处上传了演示此问题的源代码:https : //github.com/LondonAppDev/webpack-global-jquery-issue

看来问题在于第二个包导入正在重新添加没有datpicker附加组件的jQuery。有没有解决的办法?

罗素·辛格尔顿

对于这种类型的问题,我已经进行了几轮调查,并且在暴露加载程序方面取得了最大的成功在您的webpack配置中,您应该使用以下公开加载程序配置为jQuery设置一个部分:

{
    test: require.resolve('jquery'),
    use: [{
        loader: 'expose-loader',
        options: 'jQuery'
    }, {
        loader: 'expose-loader',
        options: '$'
    }]
},

这里有一个类似的SO帖子:

如何在webpack中导入jquery(它们的regex模式对我不起作用)

使用Webpack将jQuery公开到真实的Window对象

Webpack 2加载,公开和捆绑jquery和bootstrap

使用这种配置,您应该可以找到其他几篇文章/帖子,这是迄今为止我唯一成功完成的工作。

还要注意的是,bootstrap 4似乎也在内部对jQuery进行加载或执行要求,因此,如果在jQuery导入/要求和插件之后包含导入或要求,它将重新初始化jQuery并导致插件失去作用域。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章