2

在我的电子(http://electron.atom.io/docs/latest/tutorial/quick-start/ )中使用引导滑块(https://github.com/seiyria/bootstrap-slider )时出现以下错误) 应用程序 :

“未捕获的 TypeError:$(...).Slider 不是函数”

早些时候,我也在努力使用 Jquery,但使用以下方法解决了它: https ://github.com/atom/electron/issues/254 :

window.$ = window.jQuery = require('/path/to/jquery'); 而不是常规:

引用的原因是 Query 包含以下内容:

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);
    }       

请告诉我如何处理这个问题。

4

3 回答 3

3

您有 2 个选项:

  1. 在 index.html 页面中定期包含 jQuery 和 Bootstrap 滑块,并在每个页面之后添加一个脚本,以使它们像这样全局化:

<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在需要时包含 jQuery 和 Slider

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

于 2015-09-07T05:57:51.650 回答
1

昨天在下面找到了解决方案。使用 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>

好处

  • 适用于具有相同代码的浏览器和电子
  • 修复所有第 3 方库(不仅仅是 jQuery)的问题,而无需指定每个库
  • Script Build / Pack Friendly(即Grunt / Gulp将所有脚本放入vendor.js)
  • 不需要节点集成为假

来源这里

于 2018-02-07T11:32:25.923 回答
0

我可以通过将的 jquery 路径放在 bootstrap-slider.js 中来解决这个问题

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

这可能是错误的解决方案,但希望一个坏主意可以带来一个好主意:)

于 2015-11-04T17:41:20.153 回答