【问题标题】:expose-loader doesn't expose modifications to exposed object暴露加载器不暴露对暴露对象的修改
【发布时间】:2018-06-19 01:02:58
【问题描述】:

我正在使用 Webpack 2、Bootstrap 3 和 TypeScript,并尝试将 npm 和打包的包集成到现有应用程序中。我使用ProvidePlugin 使jQuery 可用,并使用expose-loader 将jQuery 暴露给外部依赖项。

(<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"
    }),
]),

entry.ts:

import "expose-loader?$!jquery"
import "expose-loader?jQuery!jquery"

但是,当我尝试调用import "bootstrap" 时,我可以在我的模块内调用$(...).popover(),我可以在模块外调用$(...)jQuery(...),但我不能在模块外调用$(...).popover模块,而不是我得到这个错误:

未捕获的类型错误:$(...).popover 不是函数

如何使添加到 jQuery 的方法(如引导程序 popover 方法)在我的模块之外的全局范围内可用?

【问题讨论】:

    标签: javascript twitter-bootstrap typescript twitter-bootstrap-3 webpack


    【解决方案1】:

    我发现了我的问题: PluginProvider 向应用程序公开的 jQuery 版本与 expose-loader 公开的不同。 Bootstrap 在 PluginProvider jQuery 上进行初始化,但另一个 jQuery 实例被暴露给 window

    要使其正常工作,请删除 PluginProvider 并使用 expose-loader。并在需要的地方手动导入 jQuery,作为丢失 PluginProvider 的副作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-03
      相关资源
      最近更新 更多