Electron 使用jQuery的时候“jQuery/$ is not defined”
一. 问题描述
最近在写一个音乐下载器用到bootstrap+jQuery+Electron。在jQuery引入的时候出现:
二. 解决方案
首先想到的是引入位置导致,换过多次位置无解,在stackflow上,找到:
https://stackoverflow.com/questions/32621988/electron-jquery-is-not-defined
解决方法1:
<!-- 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>
解决方法2:
使用node的require方法导入,把jQuery引入的script改成:
<script>window.$ = window.jQuery = require('./node_modules/jquery/dist/jquery.js') </script>
三.出现问题原因:
Node中有个module参数传入,jQuery中有这样代码:
if ( typeof module === "object" && typeof module.exports === "object" ) {
// set jQuery in `module`
} else {
// set jQuery in `window`
}
jQuery定义到局部module中而不是全局。
参考资料:
https://github.com/electron/electron/issues/254#issuecomment-183483641