当前位置: 首页 > 知识库问答 >
问题:

用Webpack向真实窗口对象公开jQuery

孙修德
2023-03-14

我想将jQuery对象公开给全局窗口对象,该对象可以在浏览器的开发人员控制台中访问。现在,在我的webpack配置中,我有以下几行:

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

这些行将 jQuery 定义添加到我的 webpack 模块中的每个文件中。但是当我构建项目并尝试在开发人员控制台中访问 jQuery 时,如下所示:

window.$;
window.jQuery;

它说这些属性是未定义的…

有没有办法解决这个问题?

共有3个答案

上官波鸿
2023-03-14

看起来窗口对象在所有模块中都公开。

为什么不直接导入/要求<code>JQuery</code>并放入:

window.$ = window.JQuery = JQuery;

您需要确保在需要/导入任何使用window.JQuery的模块之前发生这种情况,无论是在需要模块中还是在使用它的模块中。

岑经纶
2023-03-14

一个典型的例子是jQuery插件。他们中的大多数只是期望jQuery是全局定义的。使用Pro视频插件,您可以确保jQuery是一个依赖项(例如之前加载的),并且在他们的代码中出现的jQuery将被替换为webpad原始等效的要求('jQuery')

如果你有外部脚本依赖于全局命名空间中的符号(比如说外部托管的JS,Selenium中的Javascript调用或只是在浏览器控制台中访问符号),你想改用暴露加载器

简而言之:ProVidePlugin管理对全局符号的构建时依赖关系,而exex-loader管理对全局符号的运行时依赖关系。

姬寂离
2023-03-14

您需要使用公开加载器。

npm install expose-loader --save-dev

您可以在需要时这样做:

require("expose?$!jquery");

或者您可以在您的配置中这样做:

loaders: [
    { test: require.resolve('jquery'), loader: 'expose?jQuery!expose?$' }
]

更新:从webpack 2开始,您需要使用expose加载程序而不是expose:

module: {
    rules: [{
        test: require.resolve('jquery'),
        use: [{
            loader: 'expose-loader',
            options: '$'
        }]
    }]
}
 类似资料:
  • 问题内容: 我不会将jQuery对象公开给浏览器中开发人员控制台内部可访问的全局窗口对象。现在在我的webpack配置中,有以下几行: 这些行将jQuery定义添加到我的webpack模块中的每个文件中。但是,当我构建项目并尝试在开发者控制台中访问jQuery时,如下所示: 它说这些属性是不确定的… 有没有办法来解决这个问题? 问题答案: 您需要使用expose-loader.。 您可以在需要时执

  • 我正在尝试将bootstrap-daterangepicker与WebPack一起使用。在我的视图文件中,我有以下内容: 在中:

  • 问题内容: 如何使用jQuery访问父窗口对象? 这是我的父窗口变量,我想在关闭子窗口后设置其值。 问题答案:

  • 本文向大家介绍C#实现关闭子窗口而不释放子窗口对象的方法,包括了C#实现关闭子窗口而不释放子窗口对象的方法的使用技巧和注意事项,需要的朋友参考一下 在线扫描相机的调试过程中,需要开辟调试界面来进行位置的配置。调试结束后,一种常用的方式是将调试参数保存并在下次启动时加载。另一种简单方式是直接使用该参数运行程序。因此,在后一种情况下,需要实现的功能是:即使关闭调试窗口,其窗口对象也不释放。除非其主窗口

  • 我使用webpack构建React组件。下面是JSX文件: 然后,我想在html中调用函数我有WebPack的配置文件: 但是我不能用HTML呈现我的组件: 我得到错误:

  • 我有以下工作(运行)代码,但我得到TypeScript错误属性'onSubmit'不存在于类型'Window 在我的 global.d.ts 文件中,我尝试导出要导入的接口 并声明全局 两个解决方案都不成功,错误仍然存在。如何将属性添加到窗口对象以供TypeScript识别?