全网最全搭建Electron项目的各种方式及错误解决

一、官方文档手动搭建

文档地址:快速入门 | Electron,按照文档步骤操作即可,项目只包含了Electron依赖,仅仅只是一个hello world展示。

二、github上拉取官网的electron-quick-start项目

electron-quick-start跟方式一创建的一样,只不过是直接拉取下来,不用自己手动搭建。

三、官方脚手架方式创建

npm init electron-app@latest my-app -- --template=vite  #my-app:项目名
#或
npm create electron-app@latest my-app -- --template=vite #my-app:项目名
#或
pnpm create electron-app my-app --template=vite  #my-app:项目名

--template参数可指定模板,目前支持4种模板:

  • webpack

  • webpack-typescript

  • vite

  • vite-typescript

如果创建不成功,可能是由于网络原因,只有多试几次,或者挂梯子。。。

我这里选择默认模板,项目结构如下:

拉取项目后,安装依赖时,electron包可能会由于网络原因安装失败,解决方法见下面的错误二! 

执行npm run make打包,可能会报错:

错误一:

报错提示没有权限创建out文件夹,用管理员方式打开命令提示窗或PowerShell打包即可;

错误二:

拉取electron依赖超时:

electron的安装并不依赖本地npm中registry所配置的镜像,解决方法:在项目根目录创建.npmrc文件,内容如下:

ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/

再次打包就不会报错了。

打包后运行my-app.exe,可能会报如下错误:

执行如下命令后,再重新打包就不会报错了:

pnpm electron-forge import
#或
npm electron-forge import

成功运行:

此方式搭建的项目任然是比较简单的基础框架,除了webpack、typescript或者vite外,要想使用其他额外框架,需要自己手动集成进去。 相对于方式一、二来说,此方式中,打包这块的东西是已经帮我们集成好了的。

四、使用create-electron-vite脚手架搭建

官方文档:Electron⚡️Vite 

注:此模板并非由vite官方提供而是一位就职于哈啰的大神(草鞋没号)提供的。

创建命令如下:

pnpm create electron-vite my-app #my-app 项目名称
#或
yarn create electron-vite my-app #my-app 项目名称
#或
npm create electron-vite@latest my-app #my-app 项目名称
#或
npm init electron-vite@latest my-app #my-app 项目名称

使用其他包管理器的同学请查看官方文档,或自行百度之 。

执行命令创建项目并安装依赖: 

项目结构:

运行效果图:

这种方式创建项目,有三种技术栈可选:vue,react,vanilla;默认还集成了vite+typescript。 

五、使用vite脚手架创建

执行如下命令:

npm create vite@latest

注:使用其他包管理器的同学,可以查看 Vite官方文档 。

输入项目名称后,到框架选择这步,选择Others:

接着下一步选择create-electron-vite:

会提示安装 create-electron-vite,选择y,然后同样有三种技术栈可选择:vue,react,vanilla;选择一个自己擅长的,回车即可完成项目创建。

值得一提的是,这种方式创建的项目,其实跟方式四创建的项目是完全一样的,只不过是通过vite创建的,在electron-vite的文档上也介绍了这种创建方式:Getting Started

六、使用electron-vite工具创建

npm仓库地址:@quick-start/create-electron - npm

文档地址:electron-vite 下一代 Electron 开发构建工具

前提条件:需要 Node.js 版本 18+,20+ 和 Vite 版本 4.0+

创建命令:

$ npm create @quick-start/electron
#或
$ yarn create @quick-start/electron
#或
$ pnpm create @quick-start/electron

也可以在创建命令中指定模板:

# npm 6.x
npm create @quick-start/electron my-app --template vue

# npm 7+, extra double-dash is needed:
npm create @quick-start/electron my-app -- --template vue

# yarn
yarn create @quick-start/electron my-app --template vue

# pnpm
pnpm create @quick-start/electron my-app --template vue

 执行命令后,按照提示一步步进行:

创建成功后,项目结构如下: 

安装依赖后启动项目,界面如下:

  

这种方式创建的项目,各方面比较完善 ,包括依赖安装失败问题,打包失败问题,以及后期项目的更新迭代(electron-updater)等,均已解决,故可作为生产环境正式项目的搭建方式。

七、github上克隆awesome-vite中的模板

awesome-vite模板地址

目前的模板列表:

  • electron-vite-vue - Electron + Vite + Vue template.
  • electron-vite-react - Electron + Vite + React template.
  • electron-vite-boilerplate - Support SerialPort, SQLite3 and node C/C++ addons.
  • electron-vite-quick-start - Full stack uses Vite to run Electron application, including main process.
  • electron-vite-template - Electron 13, Vue 3 and TypeScript. Make your desktop development easier.
  • fast-vite-electron - Vue3 + Vite + Electron with esbuild.
  • fast-vite-nestjs-electron - Vue3 + Vite + Electron + Nestjs with esbuild.
  • vite-plugin-electron-quick-start - Template for Electron projects.
  • vite-electron-builder - Electron apps using Vite for both back and front-end, with automatic releases.
  • vite-reactts-electron-starter - React, Tailwind CSS, TypeScript and Electron.
  • Vitectron - TypeScript & JSX + Vue 3.x + Vite 2.x + Pinia 2.x + Vue-Router 4.x.
  • vite-plugin-electron-renderer - Support use Node.js API in Electron-Renderer.
  • electron-vue-template - Electron template with TypeScript, including Electron Builder.
  • Vitron - Build beautiful (win, linux, mac) desktop apps for modern web projects with vite and electron.
  • Vutron - Electron + Vite + Vue 3 + Pinia (TypeScript) template.
  • vite-electron-plugin - High-performance, esbuild-based Vite Electron plugin.
  • vite-plugin-doubleshot - For building Node.js backend or Electron main process.

我这里选择第一个拉取,项目结构如下:

运行结果:

如果打包报错,

参考这篇文章:electron(二):vue成型项目中使用electron打包的时候会报错下载部分文件失败_nsis-3.0.4.1/nsis-3.0.4.1.7z-CSDN博客写的挺全的,我就不赘述了。

这个模板貌似跟方式四搭建的模板差不多的,代码结构很相似,而且也有草鞋没号的参与。

八、使用Vutron模板创建

Vutron文档地址:Vutron

注:这个模板在方式七中提到的awesome-vite模板列表中也是有的。

执行安装命令:

npm init vutron
#或
pnpm create vutron

这个过程会自动帮我们安装依赖,但由于网络原因,可能会安装失败,只有多试几次,或者挂梯子自己手动安装。反正我是试了好几次才成功的

也可以直接克隆github上的vutron仓库,依然可能会有依赖安装的问题,只有多试几次。。。

git clone https://github.com/jooy2/vutron <PROJECT_NAME>

运行效果:

依赖截图:

测试了下打包,会报错:

依旧是网络原因,在github上拉取electron二进制文件失败了,在项目根目录创建.npmrc文件,设置electron源为国内源即可解决:

electron_mirror=https://npmmirror.com/mirrors/electron/
electron_builder_binaries_mirror=https://npmmirror.com/mirrors/electron-builder-binaries/
shamefully-hoist=true

这个模板比较完善,集成了vite + vue + vur-router + pinia + i18n + typescript + playwright(测试框架),还集成了代码风格插件eslintprettier;使用的UI框架是vuetify,若不喜欢可以自己替换。更多模板详情可以查看文档,这里不再赘述。

生产环境框架快速搭建可以考虑这个模板。

九、使用electron-vue-template模板创建

文档地址:基于vue来构建一个electron应用程序

注:这个模板在方式七中提到的awesome-vite模板列表中也是有的。

直接从github上拉取项目,有好几个分支,选择默认分支就行

git clone https://github.com/umbrella22/electron-vite-template.git myapp #myapp 自定义项目名称

如果安装依赖报错,多半是electron依赖安装失败问题,在根目录创建.npmrc文件,内容见方式八。

依赖截图:

启动项目,有点高大上的感觉:

居然有启动加载动画:

运行后界面效果:

 执行打包命令,报错:

解决方式依旧是创建.npmrc文件,内容见方式八。

打包后运行可能会报如下错误:

 原因是依赖安装不完善所致,删除项目下的packag-lock文件或者pnpm-lock文件,再执行命令快速删除node_modules目录,注:在PowerShell下执行会报错

rd /s /q node_modules

然后重新安装依赖便可解决此问题。

此模板也相对较完善,依旧使用了vite构建,除此之外还集成了

  • vue-router
  • pinia
  • electron
  • electron-updater
  • typescript
  • element-plus
  • vue
  • axios

此模板可用于electron + vue技术栈项目的快速搭建 。

总结

如果你只是想体验下electron,或者测试一些官方文档中示例代码,则可以选择方式一、二创建项目。

如果想要打包功能开箱即用,并且不包含过多的其他依赖,那么选择方式四、方式五搭建是最好的。

如果想要完善点的模板,推荐方式六、八、九搭建项目,它们集成了更多的框架,如:react、vue、vite、webpack、pinia、vue-router等。

方式三(官方脚手架)不太推荐,由于大陆网络原因,经常会遇到依赖安装失败,和打包失败的问题,当然,如果你有梯子那就无所谓了。

注:转载请注明出处,前期测模板以及后期的整理撰写,还是花了不少时间!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/566839.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

MySQL数据库运维:运行监控及解决sql执行死锁问题

前言 在现代数据密集型应用程序的开发和部署中&#xff0c;MySQL数据库的运维是至关重要的环节之一。一个良好设计和维护的MySQL数据库系统可以确保数据的准确性、可靠性和高效的访问&#xff0c;从而支持业务的顺利运行。然而&#xff0c;随着业务规模的增长和复杂性增加&…

Spring 5源码学习

文章目录 一. 访问[spring官网], 找到Spring Framework&#xff0c;点击红色标记github仓库&#xff0c;下载对应的分支代码&#xff0c;本人下载5.1.x二. 安装gradle三. 调整spring-framework配置四. 开始编译五.导入idea 一. 访问[spring官网], 找到Spring Framework&#xf…

使用Python和wxPython下载视频封面

介绍&#xff1a; 在在线视频内容的世界中&#xff0c;是领先的平台。拥有数十亿的视频&#xff0c;拥有引人注目的封面图像非常重要&#xff0c;以吸引观众。在本博客文章中&#xff0c;我们将探讨如何使用Python和wxPython模块下载视频封面。我们将提供两个代码示例&#xff…

图像数据做并行规约时,如何确定共享内存和网格的大小

做并行规约时&#xff0c;如何确定共享内存和网格的大小 1、为什么要确定共享内存和网格大小2、共享内存大小定义3、网格大小 注&#xff1a;1、这里记录使用笔记&#xff0c;不对cuda的名词做解释&#xff0c;没有详细数学原理和代码。 2、环境&#xff1a;cuda8.0&#xff0c…

密码学 | Random Oracle 随机预言机

​ &#x1f951;原文&#xff1a;究竟什么才是随机预言机呢&#xff1f; - 玄星的回答 &#x1f951;答主指出&#xff1a; 英文维基明明对 随机预言机 给出了两个完全不同的理解&#xff0c;但这两个理解之间的连接词却是 “Stated differently”&#xff0c;即 “换句话说…

STM32通过ESP8266(MQTT)连接新版ONENET(2024/4/23)(保姆级教程)附运行结果

⏩ 大家好哇&#xff01;我是小光&#xff0c;想要成为系统架构师的嵌入式爱好者。 ⏩在各种嵌入式系统中我们经常会使用上位机去做显示&#xff0c;本文对STM32通过ESP8266连接最新版的ONENET做一个详细教程。 ⏩感谢你的阅读&#xff0c;不对的地方欢迎指正。 STM32通过ESP82…

【图说】VMware Ubuntu22.04 详细安装教程

前言 无论是从事 Linux 开发工作&#xff0c;还是希望电脑运行双系统&#xff0c;VMware 虚拟机都是我们日常工作不可或缺的工具。本章将会重点介绍 VMware 安装流程&#xff0c;以及在 VMware 上如何运行、使用 Ubuntu22.04 系统。 一、VMware 下载安装 1.1 VMware 官网下载…

如何查看西门子触摸屏的镜像版本?

如何查看西门子触摸屏的镜像版本? 当软件组态的设备版本和实际设备镜像之间版本不同时,那么在传输项目时就会出现兼容性冲突的提示。 镜像版本说明: 如何调整镜像版本(升级或降级)? 为了使用新功能以及提高面板的稳定性、可靠性和可用性,建议使用新的镜像版本。 一、 通…

目标检测算法是指什么?

一、目标检测算法是指什么&#xff1f; 目标检测算法是计算机视觉领域的一个重要分支&#xff0c;它旨在识别和定位图像中的目标对象。以下是目标检测算法的相关内容&#xff1a; 目标检测的核心问题&#xff1a;目标检测需要解决的两个核心问题是“目标是什么”和“目标在哪里…

【计算机网络】(三)物理层 - 通信基础

文章目录 【计算机网络】&#xff08;三&#xff09;物理层 - 通信基础前言3.1 物理层的基本概念3.2 数据通信的基础知识3.2.1 数据、信号、码元3.2.2 信源、信宿、信道3.2.3 编码、调制3.2.3.1 基带调制&#xff08;编码&#xff09;3.2.3.2 带通调制&#xff08;调制&#xf…

想搭建跨境电商网站?掌握这些源码关键点,助您轻松上线

随着全球化的发展和电子商务的兴盛&#xff0c;跨境电商已成为企业拓展国际市场的主要方式之一。然而&#xff0c;想要搭建一个成功的跨境电商网站并非易事&#xff0c;其中关键之一就是掌握跨境电商网站源码的要点。在本文中&#xff0c;我将为您深入探讨如何选择、优化和维护…

一个java项目中,如何使用sse协议,构造一个chatgpt的流式对话接口

前言 如何注册chatGPT&#xff0c;怎么和它交互&#xff0c;本文就不讲了&#xff1b;因为网上教程一大堆&#xff0c;而且你要使用的话&#xff0c;通常会再包一个算法服务&#xff0c;用来做一些数据训练和过滤处理之类的&#xff0c;业务服务基本不会直接与原生chatGPT交互。…

mysql-connector-java和spring-boot-starter-jdbc和mybatis-spring-boot-start

mysql-connector-java和spring-boot-starter-jdbc和mybatis-spring-boot-start JDBC是什么意思&#xff1f; JDBC是使用java语言操作mysql数据库的规范&#xff0c;java语言必须按照这个规范写才可以操作mysql数据库。 mysql-connector-java 在最开始的时候 程序中是不允许…

省级客运、货运量及周转量数据(1990-2022年)

1、数据介绍 客运量和货运量是衡量交通运输行业发展状况的重要指标&#xff0c;可以反映一个地区或国家的经济发展水平和人民生活水平。而周转量则是反映运输行业效率的指标&#xff0c;即货物或旅客被运输的总距离。 省级客运、货运量及周转量是衡量一个地区交通运输行业发展…

第⑮讲:Ceph集群管理与监控操作指南

文章目录 1.查看集群的状态信息2.动态的查看集群的状态信息3.查看集群的利用率4.查看OSD的资源利用率5.查看OSD的列表6.查看各组件的状态7.查看集群的仲裁信息8.查看/修改集群组件sock的配置参数 1.查看集群的状态信息 通过集群状态信息可以看到集群的健康状态、各个组件的运行…

uniapp app权限说明弹框2024.4.23更新

华为上架被拒绝 用uni-app开发的app&#xff0c;上架华为被拒&#xff0c;问题如下&#xff1a; 您的应用在运行时&#xff0c;未见向用户告知权限申请的目的&#xff0c;向用户索取&#xff08;电话、相机、存储&#xff09;等权限&#xff0c;不符合华为应用市场审核标准。…

Bingbong的回文路径

Here 利用回文串&#xff0c;从左往右与从右往左的hash值相同来判断从左往右&#xff0c;例&#xff1a;从右往左&#xff0c;例&#xff1a;由于在树上&#xff0c;考虑建两颗树&#xff0c;一颗根为最高位&#xff08;up&#xff09;&#xff0c;一棵根为最低位&#xff08;…

0 transformers入门,HuggingFace!

目录 1 了解 2 文本分类 1 了解 1 依赖安装 !pip install transformers -i https://pypi.tuna.tsinghua.edu.cn/simple some-package 2 了解transformers 能做什么 from transformers.pipelines import SUPPORTED_TASKS SUPPORTED_TASKS.items()2 文本分类 我没外网所以…

微信小程序 讯飞录音 点击按钮录音内容转文字

<page-meta page-style"{{ showPolish ? overflow: hidden; : }}" /> <view class"wrap"> <view class"header-tab" style"justify-content: {{typeList.length > 2 ? start : center}}"><view class&quo…

promise笔记

1.介绍 之前的异步编程都是回调函数&#xff08;数据库操作、ajax、定时器、fs读取文件 &#xff09; promise是es6异步编程新的解决方案&#xff0c;是一个构造函数 优点&#xff1a;支持链式调用&#xff0c;可以解决回调地狱&#xff0c;可以指定回调函数 2.使用 functio…