Iro*_*ean 6 javascript twitter-bootstrap typescript twitter-bootstrap-3 webpack
我正在使用 Webpack 2、Bootstrap 3 和 TypeScript,并尝试将 npm 和打包的包集成到现有应用程序中。我正在使用ProvidePlugin使 jQuery 可用,并将expose-loaderjQuery 公开给外部依赖项。
((<any> global).$ = global.jQuery = $;或 webpackmodule: { 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"
}),
]),
Run Code Online (Sandbox Code Playgroud)
条目.ts:
import "expose-loader?$!jquery"
import "expose-loader?jQuery!jquery"
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试调用时,import "bootstrap"我可以$(...).popover()在我的模块内调用,也可以在模块外调用$(...)或jQuery(...),但不能$(...).popover在模块外调用,而是收到此错误:
未捕获的类型错误:$(...).popover 不是函数
如何使添加到 jQuery 的popover方法(如 bootstrap方法)在我的模块之外的全局范围内可用?
我发现了我的问题:
PluginProvider向应用程序公开了与公开版本不同的 jQuery 版本expose-loader。Bootstrap 正在 PluginProvider jQuery 上进行初始化,但 jQuery 的不同实例被暴露给window.
因此,要使其正常工作,请删除 PluginProvider并仅使用expose-loader. 并在您需要的地方手动导入 jQuery,这是丢失 PluginProvider 的副作用。
| 归档时间: |
|
| 查看次数: |
905 次 |
| 最近记录: |