我正在使用Webpack 2,Bootstrap 3和TypeScript,并尝试将npm和打包的bundle集成到现有的应用程序中。我使用ProvidePlugin
使jQuery可用,并expose-loader
将jQuery暴露给外部依赖项。
((<any> global).$ = global.jQuery = $;
或webpack module: { rules [{}] }
配置的任意组合都不起作用,但最终我得到以下工作:
plugins: ([
// make sure we allow any jquery usages outside of our webpack modules
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery",
jquery: "jquery",
"window.jQuery": "jquery",
"window.$": "jquery"
}),
]),
entry.ts:
import "expose-loader?$!jquery"
import "expose-loader?jQuery!jquery"
然而,当我尝试拨打import "bootstrap"
时,我可以在我的模块中拨打$(...).popover()
,我可以在模块外拨打$(...)
或jQuery(...)
,但我可以& #39; t在模块外调用$(...).popover
,而不是我收到此错误:
未捕获的TypeError:$(...)。popover不是函数
如何在模块之外的全局范围内创建添加到jQuery的方法(如bootstrap popover
方法)?
答案 0 :(得分:1)
我发现了我的问题:
PluginProvider
向应用程序公开了不同版本的jQuery,而expose-loader
正在公开。 Bootstrap正在初始化PluginProvider jQuery,但jQuery的另一个实例正在向window
公开。
为了使其正常工作,请删除PluginProvider 并使用expose-loader
。并在需要的地方手动导入jQuery,作为失去PluginProvider的副作用。