使用electron创建桌面应用及常见打包错误解决

简介: 使用electron创建桌面应用及常见打包错误解决

一、基本要求

在使用Electron进行开发之前,您需要安装 Node.js。

要检查 Node.js 是否正确安装,请在您的终端输入以下命令:

node -v
npm -v

这两个命令应输出了 Node.js 和 npm 的版本信息。


二、创建应用

1、首先创建一个文件夹
mkdir my-electron-app && cd my-electron-app
2、初始化 npm 包
npm init -y

init初始化命令会提示您在项目初始化配置中设置一些值 为本教程的目的,有几条规则需要遵循:

入口点 应当是 main.js (您很快就会创建它)

author、license 和 description可为任意值,但对于 应用打包 是必填项。

3、你的 package.json 文件应该像这样:
{
  "name": "my-electron-app",
  "version": "1.0.0",
  "description": "Hello World!",
  "main": "main.js",
  "author": "Jane Doe",
  "license": "MIT"
}
4、然后,将 electron 包安装到应用的开发依赖中。
npm install --save-dev electron
5、在您的 package.json配置文件中的scripts字段下增加一条start命令:
{
  "scripts": {
    "start": "electron ."
  }
}
6、要初始化这个main文件

在您项目的根目录下创建一个名为main.js的文件

const { app, BrowserWindow } = require('electron')

//在第一行中,我们使用 CommonJS 语法导入了两个 Electron 模块:
//app,它着您应用程序的事件生命周期。
//BrowserWindow,它负责创建和管理应用窗口。


const createWindow = () => {
  const win = new BrowserWindow({
    width: 800,
    height: 600
  })

  win.loadFile('index.html')
}

//在应用准备就绪时调用函数
app.whenReady().then(() => {
  createWindow()
})
7、创建页面

在您的项目根目录下创建一个名为index.html的文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    hello
</body>
</html>
8、start命令能让您在开发模式下打开您的应用
npm start
• 1


三、打包并分发您的应用程序

1、最快捷简单的打包方式是使用 Electron Forge
1.1、将 Electron Forge 添加到您应用的开发依赖中,并使用其"import"命令设置 Forge 的脚手架:
npm install --save-dev @electron-forge/cli
npx electron-forge import

✔ Checking your system

✔ Initializing Git Repository

✔ Writing modified package.json file

✔ Installing dependencies

✔ Writing modified package.json file

✔ Fixing .gitignore


We have ATTEMPTED to convert your app to be in a format that electron-forge understands.


Thanks for using “electron-forge”!!!

1.2、转换脚本完成后,Forge 会将一些脚本添加到您的 package.json 文件中。

package.json

"scripts": {
    "start": "electron-forge start",
    "package": "electron-forge package",
    "make": "electron-forge make"
  },
1.3、使用 Forge 的 make 命令来创建可分发的应用程序:
npm run make

my-electron-app@1.0.0 make /my-electron-app

electron-forge make

✔ Checking your system

✔ Resolving Forge Config

We need to package your application before we can make it

✔ Preparing to Package Application for arch: x64

✔ Preparing native dependencies

✔ Packaging Application

Making for the following targets: zip

✔ Making for target: zip - On platform: darwin - For arch: x64

1.4、Electron-forge 会创建 out 文件夹,您的软件包将在那里找到:

// Example for macOS

out/

├── out/make/zip/darwin/x64/my-electron-app-darwin-x64-1.0.0.zip

├── …

└── out/my-electron-app-darwin-x64/my-electron-app.app/Contents/MacOS/my-electron-app

2、完善灵活的打包方式是使用 electron-builder
2.1、安装
npm install electron-builder --save-dev
2.2、配置package.json
"scripts": {
    "build": "electron-builder",
    "build:mac": "electron-builder --mac",
    "build:win": "electron-builder --win",
},
2.3、配置图标

mac:icon.icons or icon.png 512 * 512

win:icon.ico or icon.png 256 * 256

linux:icon.png 256 * 256

放到build文件夹下

2.4、打包
npm run build

打包成功会在dist目录下


四、故障排查

1、在运行 npm install electron 时,有些用户会偶尔遇到安装问题。

在大多数情况下,这些错误都是由网络问题导致,而不是因为 electron npm 包的问题。 如 ELIFECYCLE、EAI_AGAIN、ECONNRESET 和 ETIMEDOUT 等错误都是此类网络问题的标志。 最佳的解决方法是尝试切换网络,或是稍后再尝试安装。


如果通过 npm 安装失败,你也可以尝试通过从 https://github.com/electron/electron/releases 直接下载 Electron


npm下载electron失败,可以使用yarn来下载electron。先npm install -g yarn,下载yarn,再yarn config set ELECTRON_MIRROR https://npmmirror.com/mirrors/electron/指定electron的镜像,最后再yarn add electron。就大功告成了!

2、electron-builder打包electron-v13.6.9-win32-x64.zip下载失败


按照错误提示,是 electron-v13.6.9-win32-x64.zip这个文件下载失败,可以利用报错信息中的https://github.com/electron/electron/releases/download/v13.6.9/electron-v13.6.9-win32-x64.zip这个地址进行下载,或者到GitHub上下载。

https://npm.taobao.org/mirrors/electron/26.4.1/electron-v26.4.1-win32-x64.zip

下载后找到以下位置,将压缩包解压到electron的cache文件夹中。


C:\Users\admin\AppData\Local\electron\Cache


3、electron-builder打包winCodeSign-2.6.0.7z下载失败

https://registry.npmmirror.com/binary.html?path=electron-builder-binaries/winCodeSign-2.6.0/winCodeSign-2.6.0.7z

下载后找到以下位置,将压缩包解压到electron-builder的cache文件夹中。

C:\Users\admin\AppData\Local\electron-builder\Cache

4、nsis或nsis-resources下载失败也是一样的处理

https://registry.npmmirror.com/binary.html?path=electron-builder-binaries/


C:\Users\admin\AppData\Local\electron-builder\Cache\nsis


五、依赖下载

这里有你需要的依赖文件可以手动下载


六、淘宝镜像

1、安装 cnpm 淘宝镜像:
npm install -g cnpm --registry=https://registry.npm.taobao.org

npm install -g cnpm --registry=https://registry.npmmirror.com
2、将npm设置为淘宝镜像:
npm config set registry https://registry.npm.taobao.org

npm config set registry https://registry.npmmirror.com
3、通过npm查看cnpm镜像设置:
npm config get registry
4、通过cnpm查看cnpm镜像设置:(相当于使用cnpm)
cnpm config get registry
目录
相关文章
|
2月前
|
缓存 JavaScript 前端开发
高效打造跨平台桌面应用:Electron加载服务器端JS
【9月更文挑战第17天】Electron 是一个基于 Chromium 和 Node.js 的开源框架,允许使用 HTML、CSS 和 JavaScript 构建跨平台桌面应用。加载服务器端 JS 可增强应用灵活性,实现代码复用、动态更新及实时通信。通过 HTTP 请求、WebSocket 或文件系统可实现加载,但需注意安全性、性能和兼容性问题。开发者应根据需求选择合适方法并谨慎实施。
126 3
|
1月前
|
前端开发 Unix Linux
揭秘 Electron 的 Linux 打包过程:你知道背后发生了什么吗?
本文详细介绍了 `electron-builder` 在 Linux 平台上如何打包 Electron 应用程序,涵盖了 AppImage、Flatpak、Snap 等多种格式的打包原理和具体实现。文章从初始化 `LinuxPackager` 到创建各种目标格式的包,详细解析了每个步骤的代码逻辑和关键方法,帮助开发者更好地理解和使用 `electron-builder` 进行 Linux 应用的打包。
75 2
揭秘 Electron 的 Linux 打包过程:你知道背后发生了什么吗?
|
5月前
|
资源调度 JavaScript 前端开发
IM跨平台技术学习(十一):环信基于Electron打包Web IM桌面端的技术实践
这次借着论证 Web IM端 SDK 是否可以在 Electron 生成的桌面端正常稳定使用,我决定把官方新推出的 webim-vue3-demo,打包到桌面端,并记录了这次验证的过程以及所遇到的问题和解决方法。
93 2
|
1月前
|
安全 前端开发 iOS开发
揭秘 electron-builder:macOS 应用打包背后到底发生了什么?
本文详细介绍了 Electron 应用在 macOS 平台上的打包流程,涵盖配置文件、打包步骤、签名及 notarization 等关键环节。通过剖析 `electron-builder` 的源码,展示了如何处理多架构应用、执行签名,并解决常见问题。适合希望深入了解 macOS 打包细节的开发者。
41 2
|
1月前
|
开发框架 JavaScript 前端开发
Electron技术深度解析:构建跨平台桌面应用的利器
【10月更文挑战第13天】Electron技术深度解析:构建跨平台桌面应用的利器
156 0
|
1月前
|
XML 缓存 前端开发
Electron-builder 是如何打包 Windows 应用的?
本文首发于微信公众号“前端徐徐”,作者徐徐深入解析了 electron-builder 在 Windows 平台上的打包流程。文章详细介绍了 `winPackager.ts`、`AppxTarget.ts`、`MsiTarget.ts` 和 `NsisTarget.ts` 等核心文件,涵盖了目标创建、图标处理、代码签名、资源编辑、应用签名、性能优化等内容,并分别讲解了 AppX/MSIX、MSI 和 NSIS 安装程序的生成过程。通过这些内容,读者可以更好地理解和使用 electron-builder 进行 Windows 应用的打包和发布。
109 0
|
3月前
|
容器 iOS开发 Linux
震惊!Uno Platform 响应式 UI 构建秘籍大公开!从布局容器到自适应设计,带你轻松打造跨平台完美界面
【8月更文挑战第31天】Uno Platform 是一款强大的跨平台应用开发框架,支持 Web、桌面(Windows、macOS、Linux)及移动(iOS、Android)等平台,仅需单一代码库。本文分享了四个构建响应式用户界面的最佳实践:利用布局容器(如 Grid)适配不同屏幕尺寸;采用自适应布局调整 UI;使用媒体查询定制样式;遵循响应式设计原则确保 UI 元素自适应调整。通过这些方法,开发者可以为用户提供一致且优秀的多设备体验。
140 0
|
3月前
|
前端开发 JavaScript API
强强联手打造桌面应用新标杆:Angular与Electron的完美融合——从环境搭建到通信机制,全面解析构建跨平台应用的最佳实践与技巧
【8月更文挑战第31天】随着Web技术的进步,开发者们越来越多地采用Web技术来构建桌面应用程序。通过结合使用开源框架Electron及前沿的前端框架Angular,开发者能充分利用JavaScript、HTML和CSS打造出高性能且易维护的跨平台桌面应用。本文将详细介绍如何搭建基于Angular与Electron的开发环境,包括创建Angular项目、安装Electron及相关依赖、配置Electron主进程以及实现Angular应用与Electron间的通信等关键步骤,并最终将应用打包成多平台可执行文件,为读者提供了一套完整的解决方案以快速入门并实践这一强大技术组合。
96 0
|
3月前
|
iOS开发 MacOS Python
Electron Mac 打包报 Error: Exit code: ENOENT. spawn /usr/bin/python ENOENT 解决方法
Electron Mac 打包报 Error: Exit code: ENOENT. spawn /usr/bin/python ENOENT 解决方法
|
4月前
|
JavaScript 网络安全 iOS开发
如何用 Electron 打包chatgpt-plus.top并生成mac客户端
如何用 Electron 打包chatgpt-plus.top并生成mac客户端
50 0