Electron:jQuery没有定义

问题:在使用Electron进行开发时,当您尝试使用任何需要jQuery的JS插件时,即使使用脚本标记加载正确的path,插件也不会findjQuery。

更好的更通用的解决schemeIMO:

<!-- 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)的问题,而不必指定每个库
  • 脚本构build/包装友好(即Grunt / gulp所有脚本到vendor.js)
  • 不要求node-integration是错误的

来源于此

https://github.com/atom/electron/issues/254所示; ,问题是由于以下代码引起的:

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

jQuery代码“看到”它在CommonJS环境中运行并忽略window

该解决scheme非常简单 ,而不是通过<script src="...">加载jQuery,你应该像这样加载:

 <script>window.$ = window.jQuery = require('./path/to/jquery');</script> 

注意: path之前的点是必需的 ,因为它表示它是当前目录。 另外, 请记住加载之前加载任何其他插件依赖它的jQuery

另一种编写<script>window.$ = window.jQuery = require('./path/to/jquery');</script>方法是: <script>window.$ = window.jQuery = require('./path/to/jquery');</script>是:

 <script src="./path/to/jquery" onload="window.$ = window.jQuery = module.exports;"></script> 

电子FAQ答案:

http://electron.atom.io/docs/faq/

我不能在Electron中使用jQuery / RequireJS / Meteor / AngularJS。

由于Electron的Node.js集成,有一些额外的符号插入到DOM模块,导出,require中。 这导致一些图书馆的问题,因为他们想要插入相同名称的符号。

要解决这个问题,可以closuresElectron中的节点集成:

//在主stream程中

 let win = new BrowserWindow({ webPreferences: { nodeIntegration: false } }); 

但是如果你想保持使用Node.js和Electron API的能力,你必须在包含其他库之前重命名页面中的符号:

 <head> <script> window.nodeRequire = require; delete window.require; delete window.exports; delete window.module; </script> <script type="text/javascript" src="jquery.js"></script> </head> 

您可以在BrowserWindow中将node-integration: false放入选项中。

例如: window = new BrowserWindow({'node-integration': false});

刚刚遇到同样的问题

npm install jquery --save

<script>window.$ = window.jQuery = require('jquery');</script>

为我工作

我认为我理解你的斗争,我解决它有点不同。我使用脚本加载器为我的js文件,其中包括jquery.Script加载器采取您的js文件,并将其附加到vendor.js文件的顶部它为我做了魔术。

https://www.npmjs.com/package/script-loader

在安装脚本加载器之后,将其添加到引导或应用程序文件中。

import'script!path / your-file.js';

一个很好,干净的解决scheme

  1. 使用npm安装jQuery。 ( npm install jquery --save
  2. 使用它: <script> let $ = require("jquery") </script>

好的,这里有另一种select,如果你想要一个相对包括…

 <script> window.$ = window.jQuery = require('./assets/scripts/jquery-3.2.1.min.js') </script> 
 <script> delete window.module; </script> 

在你的jQuery导入之前,你很好去。 更多信息在这里 。