【发布时间】:2019-11-14 05:24:48
【问题描述】:
我在这里发现了一个类似的问题:
Uncaught TypeError: $(...).select2 is not a function
但这不适用于 Electron(这里有另一个关于 Electron 的问题没有解决方案:https://github.com/select2/docs/issues/17),解决方案是检查 jQuery 是否加载了两次。
如何检查我是否加载了 jQuery 两次?
实际上,当我们在窗口中使用“nodeIntegration=true”时,我认为这是 Electron 中库的一个普遍问题,因为我们需要添加一些技巧:
这是我的代码:
<script>
window.$ = window.jQuery = require('jquery');
window.Popper = require('popper.js').default;
window.Bootstrap = require('bootstrap');
dt = require( 'datatables.net-bs4' )(window, window.$);
require( 'datatables.net-fixedheader-bs4' )(window, $);
//require( 'datatables.net-select-bs4' )(window, $);
</script>
<script src="../../js/select2.min.js"></script>
你能看到所有那些丑陋的黑客吗?无论如何,我觉得我没有加载 jQuery 两次,即使我是 Select2 也是在所有其他库之后添加的。
也许是因为我添加为脚本而不是使用已安装的模块?是不是可以混合起来?
更新:
也许问题出在 select2.js 的这段代码中?
/*! Select2 4.0.7 | https://github.com/select2/select2/blob/master/LICENSE.md */
!function(a) {
"function" == typeof define && define.amd ? define(["jquery"], a) : "object" == typeof module && module.exports ? module.exports = function(b, c) {
return void 0 === c && (c = "undefined" != typeof window ? require("jquery") : require("jquery")(b)),
a(c),
c
}
: a(jQuery)
}(function(a) {
我不完全理解在做什么,但似乎正在检查 module.exports,这在具有 nodeIntegration=true 的 Electron 窗口中是正确的
【问题讨论】: