2

我在我的電子(http://electron.atom.io/docs/latest/tutorial/quick-start/)的應用越來越當我使用引導滑塊 (https://github.com/seiyria/bootstrap-slider)以下錯誤:如何在Electron中使用引導滑塊?

「遺漏的類型錯誤:$(...)滑塊不是一個函數」

早些時候,我也在使用Jquery掙扎,但解決了它: https://github.com/atom/electron/issues/254

window。 而不是常規:

原因是報價查詢 包含沿着這條路線的東西:

if (typeof module === "object" && typeof module.exports === "object") { 
    // set jQuery in `module` 
} else { 
    // set jQuery in `window` 
} 

我不明白什麼是用它來引導滑塊以正確的方式。

我可以看到,bootstrap-slider.js有一個處理「模塊」的組件,可能會導致異常,就像在jquery中一樣。

(function(root, factory) { 
    if(typeof define === "function" && define.amd) { 
      define(["jquery"], factory); 
    } else if(typeof module === "object" && module.exports) { 
      var jQuery; 
      try { 
        jQuery = require("jquery"); 
      } catch (err) { 
        jQuery = null; 
      }  
      module.exports = factory(jQuery); 
    } else { 
      root.Slider = factory(root.jQuery); 
    }  

請告訴我如何處理這個問題。

回答

3

你有2種選擇:

  1. 包括jQuery和定期在index.html頁面引導滑塊與每個腳本後,使它們成爲全球像這樣:

<script src="bower_components/jquery/dist/jquery.js"></script> 
 
<script type="application/javascript"> 
 
    if (typeof module === 'object' && typeof module.exports !== 'undefined') { 
 
     window.$ = window.jQuery = module.exports; 
 
    } 
 
</script> 
 
<script src="path/to/bootstrap-slider.js"></script> 
 
<script type="application/javascript"> 
 
    if (typeof module === 'object' && typeof module.exports !== 'undefined') { 
 
     window.Slider = module.exports; 
 
    } 
 
</script>

  1. 使用require來包含jQu ERY和滑塊時,你需要他們

var $ = require('jquery'); 
 
var Slider = require('bootstrap-slider');

+0

這工作了jQuery的,而不是滑塊。它仍然一直說滑塊不是一個函數。我在Electron 1.7.12上,jQuery 1.11.0,Bootstrap 3.3.5和Bootstrap Slider 9.7.0。 –

0

我能夠在引導-slider.js將路徑jQuery來解決這個問題

Line 41: jQuery = require("my/path/to/jquery-2.1.4.min.js");

這可能是錯誤的解決方案,但希望一個壞主意可以導致一個好的:)

0

昨天發現該解決方案。在jQuery和Bootstrap Slider中爲我工作。在底部的信用。

一個更好的更通用的IMO的解決方案:

<!-- Insert this line above script imports --> 
<script>if (typeof module === 'object') {window.module = module; module = 
undefined;}</script> 

<!-- normal script imports etc --> 
<script src="scripts/jquery.min.js"></script>  
<script src="scripts/vendor.js"></script>  

<!-- Insert this line after script imports --> 
<script>if (window.module) module = window.module;</script> 

優勢

  • 同時適用於瀏覽器和電子代碼相同的
  • 爲所有第三方修復問題庫(不只是jQuery),而不必指定每一個
  • 腳本構建/包裝友好(即咕嚕/咕嘟咕嘟所有 腳本到vendor.js)
  • 不需要節點整合是假

here