我正在尝试使用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] 删除。
我来说两句