【问题标题】:Why is webpack looking for jQuery when the module doesn't require it?当模块不需要它时,为什么 webpack 会寻找 jQuery?
【发布时间】:2017-05-20 05:22:57
【问题描述】:

我想先说这个问题,我很难理解这个问题到底发生了什么,如果它不符合 Stackoverflow 的问答标准,我深表歉意。

我正在尝试import 一个 NPM 模块,然后由 Webpack 在我们的项目中编译。 This 是有问题的模块,this 是给我们带来问题的文件。

在该文件的末尾,有导出代码:

if (typeof(module) !== 'undefined')
{
    module.exports = window.Swiper;
}
else if (typeof define === 'function' && define.amd) {
    define([], function () {
        'use strict';
        return window.Swiper;
    });
}

就是这样。在整个文件中,有一些对 jQuery 的引用,但没有任何迹象表明 webpack 应该将其作为模块包含在内。搜索"jQuery" 并亲自查看。

那么为什么当我们像这样导入插件时:

import Swiper from 'swiper'

我们收到以下错误?

模块的package.json 或类似的其他地方没有将jQuery 描述为依赖项。我不知道发生了什么。如果有任何用处,这里是似乎在编译包中抛出错误的代码:

else if (typeof define === 'function' && define.amd) {
        define([], function () {
            'use strict';
            return window.Swiper;
        });
    }
    //# sourceMappingURL=maps/swiper.js.map

    /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(!(function webpackMissingModule() { var e = new Error("Cannot find module \"jquery\""); e.code = 'MODULE_NOT_FOUND'; throw e; }())))) 

【问题讨论】:

  • 看来您对 webpack 如何确定依赖关系的假设不正确...... swiper 源代码引用了 jQuery,它可能是可选的,也可能不是可选的,但 webpack 无法在没有帮助的情况下做出决定。跨度>

标签: javascript node.js npm webpack


【解决方案1】:

我认为 Swiper 本身需要 jQuery。因为你在 AMD/webpack 环境中,Swiper 试图“导入/要求”它,而 webpack 找不到它。

【讨论】:

  • 我已经成功使用了没有 jQuery 的 Swiper。 Swiper 被构建为与库无关,我在 AMD 环境之外成功地使用了它而没有 jQuery
  • 正如您在第一个错误堆栈中看到的那样,第 5333 行的 swiper.js 正在尝试加载它。可能是版本问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-01
  • 2021-11-06
  • 1970-01-01
  • 2014-04-08
  • 1970-01-01
  • 2018-04-25
  • 2019-04-01
相关资源
最近更新 更多