2017-01-05 55 views
-1

我想說這個問題的前提是說我很難理解這個問題究竟發生了什麼,我很抱歉如果達不到Stackoverflow的標準。當模塊不需要它時,爲什麼webpack會尋找jQuery?

我正在嘗試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'

我們得到下面的錯誤? enter image description here

模塊的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; }())))) 
+0

看來你對webpack如何確定依賴關係的假設是不正確的...... swiper源代碼引用了jQuery,它可能是也可能不是可選的,但webpack無法在沒有幫助的情況下做出這種決定。 –

回答

0

我認爲Swiper本身需要jQuery。由於您處於AMD/webpack環境中,Swiper正試圖「導入/需要」它,而webpack無法找到它。

+0

我已經使用沒有jQuery的Swiper成功。 Swiper的構建是與庫無關的,並且我在沒有成功使用jQuery的情況下在AMD環境之外使用它 – styke

+0

正如您在第一個錯誤堆棧中所看到的,第5333行的swiper.js正在嘗試加載它。可能是一個版本的東西。 –

相關問題