Electron 的官方文档已经告诉我们:

因为 Electron 在运行环境中引入了 Node.js ,所以在 DOM 中有一些额外的变量,比如 module、exports和require。 这导致 了许多库不能正常运行,因为它们也需要将同名的变量加入运行环境中。并给出了一些解决方案。

我在 Electron 中无法使用 jQuery、RequireJS、Meteor、AngularJS.

除了官方给出的解决方案,也收罗了其他的如下方法:
  • 方案一: 更改jq的引用写法: <script>window.$ = window.jQuery = require("./js/jquery.min.js")</script>
  • 方案二: 去掉jQuery中的第一行代码中的模块引入判断代码
!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}
!function(a,b){b(a)}
附上官方的解决方案
  • 将nodeIntegration设为false,不过这样的做法页面就不能使用nodejs和Electron APIs
// 在主进程中
const { BrowserWindow } = require('electron')
let win = new BrowserWindow({
  webPreferences: {
    nodeIntegration: false
win.show()
  • 假如你依然需要使用 Node.js 和 Electron 提供的 API,你需要在引入那些库之前将这些变量重命名。缺点是每个需要引用的页面都需要这样去改
<script> window.nodeRequire = require; delete window.require; delete window.exports; delete window.module; </script> <script type="text/javascript" src="jquery.js"></script> </head> Electron 的官方文档已经告诉我们:因为 Electron 在运行环境中引入了 Node.js,所以在 DOM 中有一些额外的变量,比如 module、exports和require。 这导致 了许多库不能正常运行,因为它们也需要将同名的变量加入运行环境中。并给出了一些解决方案。我在 Electron 中无法使用 jQuery、RequireJS、Meteor、AngularJS....
演示如何使用Bootstrap和jQuery构建电子应用程序 什么是电子? 如果可以构建网站,则可以构建桌面应用程序。 Electron是一个使用JavaScript,HTML和CSS等网络技术创建本机应用程序的框架。 它负责处理硬部分,因此您可以专注于应用程序的核心。 我为有构建Web应用程序经验并且刚刚开始使用Electron的您构建了这个演示应用程序。 我选择实施Bootstrap 4.0.0-beta3是因为: Bootstrap是世界上最流行HTML,CSS和JS框架,用于在网络上构建响应式,移动优先的项目 它碰巧需要jQuery,它也可以用于Web开发。 我从Bootstrap项目中借用了。 作为示例标记,其目的仅是演示响应式布局。 菜单按钮演示了翻转行为,但未链接任何内容。 搜索框不起作用。 对于其预期目的的示例,请抓住窗框并调整其大小。 当窗口从电话尺寸到桌子尺寸再到桌面尺寸时,请注意界面在折叠和展开时会对其进行重新设计,从而充分利用可用空间。 快速代码浏览 代码入口点在package.json中的“ main”键下。 值是“ main.js”
node-bindings非常好用,但是在Electron中无法使用,我查了一下,是因为fileName以file://开头导致无法定位动态库的根目录。已经提交给作者了,可以临时修改一下node_modules/bindings/bindings.js。 exports.getFileName = function getFileName (calling_file) { var origPST = Error.prepareStackTrace , origSTL = Error.stackTraceLimit , dummy = {} , fileName Error.s
  解决的具体方法如下:   ①.在测试的过程中(测试过1.10.1,以及当前最新的3.2.1版本都不行),发现只要使用2.03版本的jQuery或者2.2.0版本的jQuery,就不会出现$未定义的情况。   ②.使...
Electron因为开启了node集成才能实现和网页的通信,引入jQuery较高版本它的模块化定义(基于CommonJS)和Electron的内部机制冲突了。目前提供以下两个方案: 1、使用jQuery 1.8.2版本,更高版本还没有测试。 2、添加下面的代码以后,再引入jQuery的高版本。 <script>if (typeof module === 'objec...
参考问题:https://stackoverflow.com/questions/32621988/electron-jquery-is-not-defined &lt;!-- Insert this line above script imports  --&gt; &lt;script&gt;if (typeof module === 'object') {window.module = m...
Electron报错: ReferenceError: require is not defined 突然报这个错,网上很多说 要设置 nodeIntegration:true,然而我这并不起作用, 直到在stackoverflow看到一条评论: All you need to do is add contextIsolation: false after nodeIntegration: true in the webPreferences object, 试了下,果然就没问题了,意思就是在nodeInt
addWindow = new BrowserWindow({ ...... webPreferences: { //在这里添加 nodeIntegration: false, // 改为true 即可 contextIsolation:false
原因:因为没有对node.js和electron有一个系统的认识,所以原因我也不能确定,不过网上有些博客说过这个原因,感兴趣的可以搜索看一下。这里记录一下解决方案。 在新建窗口的时候,指定属性: nodeIntegration:true、contextIsolation:false webPreferences: { nodeIntegration: true, contextIsolation: false, mainWindow = new browserWindow({ width: 50
// 加载page需要两个模块:app BrowserWindow const { app, BrowserWindow } = require("electron"); const path = require("path"); // 热加载 添加这两个属性,一般来说可能添加第一个属性为true就行了,但是我这里不知道为什么不行; 然后,看到某一b站用户的评论,说需要再加contextIsolation: false,立马就不报错了,十分感谢! function createWindow() { const win = new BrowserWindow({ width: 800, height: 600, webPrefer..
这个错误通常是因为在打包之后,Electron 调用了 Node.js 中的模块,但是在浏览器环境中找不到该模块导致的。通常情况下,Electron 应用程序需要使用 `electron-builder` 或者 `electron-packager` 进行打包。 通过 `electron-builder` 打包应用程序时,需要在 `package.json` 中配置 `"build"` 字段,如下所示: ```json "name": "my-electron-app", "version": "1.0.0", "description": "My Electron App", "main": "main.js", "scripts": { "start": "electron .", "build": "electron-builder" "build": { "appId": "com.example.my-electron-app", "productName": "My Electron App", "directories": { "output": "dist" "dependencies": { "electron": "^9.0.0", "vue": "^2.6.11", "vue-router": "^3.2.0" 其中,`"build"` 字段是 `electron-builder` 所需要的配置项。在这里,我们配置了应用程序的 ID、名称、输出目录等信息。 完成配置之后,运行以下命令进行打包: ```bash npm run build 打包完成后,在输出目录中会生成一个可执行文件,可以直接运行应用程序。 如果还是出现上述错误,可以尝试在 `main.js` 中添加以下代码: ```javascript const { app, BrowserWindow } = require('electron') if (typeof module === 'object') { // Fix for 'Module is not defined' error module.exports = {} 这段代码会在 `main.js` 文件中导出一个空的模块,解决在浏览器环境中无法找到模块的问题。