【electron】判断当前进程是否是开发环境的五种方案(获取一些资源的路径)

news2025/1/7 6:47:46

文章目录

    • 导读
      • 需求
      • 开发环境
    • 判断是否是开发环境
      • 方案一:location.protocol
      • 方案二:全局变量`__static`
      • 方案三:全局变量`process.resourcesPath`
      • 方案四:全局变量`process.env.WEBPACK_DEV_SERVER`
      • 方案五:app.isPackaged
    • 获取配置目录
    • 参考资料

导读

以下内容在https://gitee.com/zkyt/electron-vue-element-admin上做的。

需求

electron作为一个客户端应用,往往需要处理配置文件,开发环境生产环境的目录有些不同,我们需要判断当前环境,来读取不同目录的配置。
在这里插入图片描述

开发环境

版本号描述
文章日期2022-11-20
操作系统Win11-22H2内部版本号22621.674
nvm version1.1.9
node -vv12.22.12npm -v (6.14.16)
electron@16.2.8npm list
electron-builder22.4.1

判断是否是开发环境

方案一:location.protocol

开发环境中:location.protocol == 'http:'
在这里插入图片描述

方案二:全局变量__static

开发环境全局变量__static包含node_modules目录。
在这里插入图片描述

方案三:全局变量process.resourcesPath

开发环境全局变量process.resourcesPath包含node_modules目录。
在这里插入图片描述

方案四:全局变量process.env.WEBPACK_DEV_SERVER

开发环境全局变量process.env.WEBPACK_DEV_SERVER值为'true'
在这里插入图片描述

方案五:app.isPackaged

const { app } = require(‘electron’)
这个app只能在Main进程使用,Render进程要使用的话,需要设置通过一些技术手段设置进来(如preload.js),这里不详细展开了。
在这里插入图片描述

参考资料:https://www.electronjs.org/zh/docs/latest/api/app

获取配置目录

从上面各种方案中,我们可以看出,方案三最适合获取配置目录
代码如下:

function get_data_path() {
	let idx = process.resourcesPath.indexOf('\\node_modules\\');
  if (idx == -1) {
    // 生成环境
    return process.resourcesPath + '\\..\\_data\\';
  } else {
    // 开发环境
    return process.resourcesPath.substring(0, idx) + '\\_data\\';
  }
}
get_data_path();

效果如下:
在这里插入图片描述

参考资料

  • 代码地址: https://gitee.com/zkyt/electron-vue-element-admin
  • 【electron】 打包应用修改图标和进程名字 https://blog.csdn.net/kinghzking/article/details/127952519

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

OS-process

process 什么是进程 进程是被加载到内存中、正在运行的程序;多个进程可能对于同一个程序、一个正在运行的OS中会有多个进程 进程是程序的一次执行过程,是操作系统分配资源的基本单位 作业等同于进程 进程的布局: 每个进程都有一个不同的…

内网渗透中最常见的十种漏洞分析总结

【环境搭建资料、工具包、全套视频…等籽料】私信聆取 以下信息是根据2020年和2019年为全球各种中型组织和企业完成的60多个渗透测试报告汇总而来的,在跳转到列表之前,让我们简要介绍一下全面的测试方法。 一、测试方法 目的是使用白盒(灰盒)方法在现场…

spirngboot项目.mvn/wrapper/maven-wrapper.properties‘ does not exist.

rm -rf ~ 命令后,项目出现一些问题,如下 执行命令: ./mvnw clean package -am -pl bistoury-dist -P$PROFILR -Dmaven.test.skip -Denforcer.skiptrue 报异常: starting to build bistoury agent Exception in thread "ma…

[附源码]java毕业设计同德佳苑物业管理系统论文

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

SpringBoot数据层解决方案/ 内置持久化解决方案JdbcTemplate使用/内置数据库H2使用以及RedisNoSql使用

写在前面: 继续记录自己的SpringBoot学习之旅,这次是SpringBoot应用相关知识学习记录。若看不懂则建议先看前几篇博客,详细代码可在我的Gitee仓库SpringBoot克隆下载学习使用! 3.4 数据层解决方案 3.4.1 使用项目 新建空项目&a…

redis的事务

Redis的事务:一次事务操作,改成功的成功,该失败的失败。 提交事务 如果遇见错误 成功的成功,失败的失败,不会回滚 先开启事务,执行一些列的命令,但是命令不会立即执行,会被放在一…

web分享会

文章目录前言平台1. 在线练习平台2. 自己搭建靶场3. CTF真题平台分享前言 个人的学习过程仅供参考。 个人情况 我是大二进的工作室,算是比较晚的了,工作室的师兄人也很好,我有问题也会去找他们。我是一位女生,非常欢迎师妹们加入&…

从购买云服务器开始到成功部署网站并且可以正常外网访问整个体系流程(从0到1的过程)

准备工作: 购买云服务器(阿里云或腾讯云都行),过程一样。购买域名,并做解析处理,通过域名访问网站(后面需要自行备案)。 云服务器一些基本配置处理: 用密码登录方式登录root用户到云服务器上 登录成功后&#xff0c…

MHDNet

发现一种性能更优的目标检测网络,不同的输入分辨率下,目标分布和检测头之间存在不同的匹配关系。基于这些有指导意义的发现,作者提出了一种基于检测头和目标分布之间匹配的轻量化交通目标检测网络,称为MHDNet。该模型在BDD100K数据…

【k8s】3、kubeadm安装k8s集群

文章目录一、环境部署1、关闭防火墙规则、关闭selinux、关闭swap交换分区2、修改主机名、DNS解析3、调整内核参数二、所有节点安装Docker三、安装k8s集群1、所有节点配置K8S源2、所有节点安装kubeadm、kubelet和kubectl3、部署K8S集群3.1 初始化操作(master节点操作…

【虚幻引擎UE】UE4/UE5 环境构建插件推荐及使用介绍

一、Ultra Dynamic Sky(天气插件) 支持天气和昼夜变换,包含音效,可以预设也可以动态切换。内置照明解决方案,太阳、月亮和天空照明均与天空同步,并随时间变化。 天气包含:晴天、2D晴天、雨天、…

进程的通信 - 命名管道

命名管道概述 命名管道(Named Pipes),顾名思义,一个有名字的管道。命名管道的名字主要是用于确保多个进程访问同一个对象。命名管道不仅可以在同一台计算机之间传输数据,甚至能在跨越一个网络的不同计算机的不同进程之…

Zbrush 导出置换 然后导入vray 在 3ds max 和 maya 设置

注:方法很多,这个只是个人学习总结,如果不合适,可另外学习其他方法! 第一步: Zbrush 导出置换和法线设置: 第二步: 3Ds max 设置方式建议用exr格式(由于导出的时候…

科目一过关技巧

口诀 3让6违——题目中看到“6分”选“违”字;看到“违”字选6分(“违”法停车的违字除外,选9分);看到“让”就3分红高蓝低——红色圈圈最高,蓝色最低虚可实禁——车辆可以压虚线,不能压实线&a…

Windows11 配置Cuda cuDNN Pytorch环境

文章目录1 安装CudaNote 安装失败的情况2 安装cuDNN3 安装Anaconda4 安装Pytorch5 使用Pycharm进行验证6 结束1 安装Cuda 进入 developer cuda: https://developer.nvidia.com/ 之后自定义路径进行安装即可 必装CUDA,其他情况自己选择 自定义路径 Document与Deve…

Python表白比心

本文介绍运用Python中的turtle库控制函数画比心图。    文章目录一、效果展示二、代码详解1 导入库2 播放音乐3 画手4 定义画心的函数5 定义写名字的函数并实现动态画心一、效果展示 在介绍代码之前,先来看下本文的实现效果。 可以参考Pinstaller(Python打包为exe…

[附源码]java毕业设计网上手机商城的设计与实现

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

JS,DOM试题2,在实践中应用,非常详细!!

列表收缩 <!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title><style>ul,li{list-style: none;padding: 0;margin: 0;}ul{display: none;}h3{margin: 0;background: cornflowerblue;}div{text-indent: 20…

基于FFmpeg的Java视频Mp4转GIF初探

背景 在一些业务场景中&#xff0c;会有如下的一些要求&#xff1a;比如有用户需要将Mp4视频转为Gif动图。当然有一些小伙伴说可以使用系统截图&#xff0c;然后使用之前提到过的技术&#xff1a;GIF图像动态生成-JAVA后台生成。需要处理的素材比较少&#xff0c;就一两个视频&…

最全Python操作excel代码,让你每天早下班两小时

在数字化时代&#xff0c;很多人工作中经常和excel打交道。本文介绍Python操作excel的脚本&#xff0c;让你工作效率更高。    文章目录一、安装openpyxl模块二、加载库三、创建文件和工作表四、在工作表指定单元格写数据五、设置单元格的颜色字体六、在excel中写入表格一、安…