【问题标题】:jQuery not available as "$" when using webpack's ProvidePlugin使用 webpack 的 ProvidePlugin 时,jQuery 不能作为“$”使用
【发布时间】:2019-03-08 20:03:28
【问题描述】:

我试图在我的 webpack 应用程序的条目 index.js 文件中使用 jQuery 作为 $,并且在浏览器中运行我的应用程序时收到此错误:

未捕获的类型错误:无法读取未定义的属性“fn”

这是由于我正在导入的模块中有一行名为 bootstrap-switch,而有问题的行是:

$.fn.bootstrapSwitch = function() {

所以我没有 $ 作为全局变量。我按照ProvidePlugin docs 上的说明进行操作,如下所示。我也尝试了this question 中提供的答案,但没有奏效。

这是我的webpack.config.js 文件的缩略版:

module.exports = {
    entry: {
        main: './src/index.js'
    },
    plugins: {
        new webpack.ProvidePlugin({
            $: 'jquery',
            jQuery: 'jquery'
        })
    }
}

这是我的src/index.js 文件:

import 'bootstrap-switch';

console.log('I am running');

任何帮助将不胜感激。

编辑

此问题的先前版本询问了实际上是 ESLint 错误的构建错误。感谢@UjinT34 帮助我解决了这个问题并专注于上面列出的实际错误。

【问题讨论】:

  • 我有一个类似的问题,一个遗留的 jQuery 插件想要使用来自 window 的 jQuery——它想要 window.jQuery,但你的可能在 window.$ 之后。 stackoverflow.com/a/48690626/5796134
  • 啊啊啊,我们去!是的,这就是问题所在!非常偷偷摸摸的插件。它使用自执行函数进行初始化,并传递给自己window.jQuery。从链接的问题的答案中添加配置解决了这个问题。如果您想在答案中链接到它,我会接受。

标签: javascript jquery webpack webpack-provide-plugin


【解决方案1】:

我将此添加为供未来用户查找的答案。

尝试将'window.jQuery': 'jquery' 添加到您的webpack.ProvidePlugin() 设置中。

module.exports = {
    ...
    plugins: [
        new webpack.ProvidePlugin( {
            $: 'jquery',
            jQuery: 'jquery',
            'window.jQuery': 'jquery'
        } )
    ]
};

【讨论】:

    【解决方案2】:

    no-undef 是一个 ESlint 错误。它不知道您的 webpack 设置。你可以specify global variables in esling config:

    {
        "globals": {
            "$": "readonly",
            "jQuery": "readonly"
        }
    }
    

    【讨论】:

    • 谢谢,你是对的,这清除了 ESLint 错误。但是请参阅上面的“附加说明”:当我运行我的应用程序时,bootstrap-switch.js:Uncaught TypeError: Cannot read property 'fn' of undefined 内部出现错误。在有问题的行上,代码是:$.fn.bootstrapSwitch = function() {。所以看起来$ 并没有将其作为该模块的变量,我将其导入到我的src/index.js 入口点。这是我的问题的根本点,现在我们清除了 ESLint 错误。有什么想法吗?
    猜你喜欢
    • 2018-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-05
    • 2016-12-25
    相关资源
    最近更新 更多