// 在主进程中
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
<!-- Insert this line above script imports -->
<script>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` 文件中导出一个空的模块,解决在浏览器环境中无法找到模块的问题。