【electron】手把手教你在 electron 环境下使用 vue-devtools,附详细报错解决办法

news2024/11/16 20:22:09

▒ 目录 ▒

    • 🛫 问题
      • 描述
      • 环境
    • 1️⃣ vue-devtools
      • 问题来源
      • 解决思路
    • 2️⃣ 屏蔽`electron-devtools-installer`加载的代码
    • 3️⃣ 加载本地`vue-devtools`插件
      • 代码实现electron加载本地插件
      • 获取`vue-devtools`:【推荐】Edge下载最新插件
      • 获取`vue-devtools`:源码编译
      • 获取`vue-devtools`:网上找编译好的
    • 🛬 结论
    • 📖 参考资料

🛫 问题

描述

对于某些electron项目,启动的时候,控制台会打印Failed to fetch extension, trying 4 more times这样的日志。
作为重度强迫症患者,必须解决掉。
在这里插入图片描述

环境

版本号描述
文章日期2023-10-12
操作系统Windows
electron22.3.27最后一个支持win7的大版本
node16.16.0
vue-devtools6.5.1

1️⃣ vue-devtools

Vue Devtools 是一款由 Vue.js 官方开发的开发工具,旨在帮助开发者更轻松地调试和开发 Vue.js 应用程序。它是一个浏览器扩展,可以安装在 Chrome、Firefox 和 Safari 等主流浏览器中。

Vue Devtools 提供了丰富的功能,包括:

  • 组件树查看器:可以查看整个应用程序的组件结构和关系,方便调试和优化。
  • 状态查看器:可以实时查看组件的状态和数据变化,便于调试和排查问题。
  • 事件监听器:可以查看组件上的事件监听器,便于调试事件处理逻辑。
  • 性能分析:可以分析应用程序的性能瓶颈,帮助优化性能。
  • 开发者工具:提供了一系列方便的开发者工具,如组件修改、样式检查等。

总之,Vue Devtools 是 Vue.js 开发者必备的工具之一,可以帮助开发者更高效地开发和调试 Vue.js 应用程序。

问题来源

为了方便使用vue-devtools。很多项目都配置了库electron-devtools-installer,该库会自动下载并加载vue-devtools。
但是,下载地址国内无法正常访问,导致报错

解决思路

  • 屏蔽electron-devtools-installer加载的代码
  • 通过其它方式加载本地vue-devtools插件

上面是解决思路,下面我们将实操起来,详细讲解其操作步骤。

2️⃣ 屏蔽electron-devtools-installer加载的代码

electron-devtools-installer加载很简单,直接使用库中的方法即可:electronDevtoolsInstaller(VUEJS_DEVTOOLS)
下面是库的常见使用示例,直接屏蔽掉electronDevtoolsInstaller所在代码就行了。

import electronDevtoolsInstaller, { VUEJS_DEVTOOLS } from 'electron-devtools-installer'

app.on("ready", async () => {
  if (isDevelopment && !process.env.IS_TEST) {
    // Install Vue Devtools
    try {
       electronDevtoolsInstaller(VUEJS_DEVTOOLS)
        .then((name) => console.log(`installed: ${name}`))
        .catch(err => console.log('Unable to install `vue-devtools`: \n', err))
    } catch (e) {
      console.error("Vue Devtools failed to install:", e.toString());
    }
  }
  createWindow();
});

3️⃣ 加载本地vue-devtools插件

代码实现electron加载本地插件

electron包含加载本地插件的接口,直接调用session.defaultSession.loadExtension,传递插件路径即可。
在这里插入图片描述

核心代码如下所示:

      // 新增的:安装本地vue-devtools
      const { session } = require("electron");
      const path = require("path");
      session.defaultSession.loadExtension(
        path.resolve(__dirname, "../../_devtools/Vuejs-devtools-6.5.1")
      );

获取vue-devtools:【推荐】Edge下载最新插件

  • 打开Edge浏览器:在这里插入图片描述
  • 打开插件下载地址:https://microsoftedge.microsoft.com/addons/Microsoft-Edge-Extensions-Home
  • 搜索vue-devtools,点击“获取”即可安装
    在这里插入图片描述
  • 获取插件ID
    浏览器中打开edge://extensions/,找到Vue.js devtools,点击后打开详情页。
    这时浏览器的地址中显示出插件ID:olofadcdnkkjdfgjcmjaadnlehnnihnl
    在这里插入图片描述

打开目录C:\Users\Administrator\AppData\Local\Microsoft\Edge\User Data\Default\Extensions\olofadcdnkkjdfgjcmjaadnlehnnihnl(其中Administrator替换为自己的电脑账号名),我们将下面内容拷贝到我们的项目目录即可。
在这里插入图片描述

获取vue-devtools:源码编译

  • 手动clone项目vue-devtools
  • 然后切换到master分支,默认的是dev分支:
  • 编译生成插件
# REM 手动clone项目vue-devtools
git clone https://github.com/vuejs/vue-devtools.git

# REM 然后切换到master分支,默认的是dev分支:
git checkout master

# REM 进入vue-devtools根目录:
npm install
npm run build

获取vue-devtools:网上找编译好的

这个就不说了,简单方便,但是获取的不一定是最新的。
小编使用的是这个项目的:https://gitee.com/ziyoren/electron-vite-vue2

🛬 结论

遇到问题,多搜索,多思考,结合现有知识,找到合适的方案。

这个问题半年前就发现了,当时没有解决掉,后来经常想到该问题,最近想到通过Edge浏览器可以下载最新的插件,省去了各种可能遇到的坑,最终解决问题。

📖 参考资料

  • 【chrome基础】Chrome、Chromium、libcef、electron版本关系大揭秘! https://blog.csdn.net/kinghzking/article/details/125896594
  • electron+vue项目添加vue-devTools https://www.jianshu.com/p/cc48d4520de3

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

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

相关文章

Linux Shell 实现一键部署vmtools

VMware Tools 简介 VMware Tools 中包含一系列服务和模块,可在 VMware 产品中实现多种功能,从而使用户能够更好地管理客户机操作系统,以及与客户机操作系统进行无缝交互。 VMware Tools 具备以下功能: 将消息从主机操作系统传递…

2023年中国家用照明市场发展趋势分析:家用照明市场中智能产品提升显著[图]

2016-2019年我国家用照明行业迎来初步快速发展,2020-2021年受疫情影响增速稍微放缓,2022年,我国家用照明行业规模为362.8亿元,同比增长0.58%;预计2023年家用照明行业表现将有明显反弹,市场规模将达413亿元&…

DW网页作业成品下载后导入Dreamweaver如何新建站点及导出站点

很多学生下载了HTMLhttps://blog.csdn.net/qq_41101110?spm1011.2415.3001.5343后,想自己进行修改图文或者文字内容,或者修改网页文件名称。对于基础较差的同学,使用Dreamweaver新建站点导入作品后再修改,就更简单些了。 新建站…

【深度学习】MNIST手写数字数据集的分类识别

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

使用docker安装db2

使用docker安装db2 1. 前言1.1 关于docker的安装1.2 安装db2版本选择参考 2. 拉取镜像3. 启动镜像4. 进入容器,切换用户4.1 进入容器4.2 切换用户4.3 其他命令 5. 可视化工具DBeaver连接db25.1 连接5.2 简单使用 1. 前言 1.1 关于docker的安装 关于Linux上docker的…

一些常用的兼容性测试方法和技巧

兼容性测试是软件开发过程中的重要环节,但如何进行有效的兼容性测试是一个需要关注的问题。下面将介绍一些常用的兼容性测试方法和技巧。 首先,要确定兼容性测试的范围。根据软件的特点和用户的需求,确定需要测试的操作系统、浏览器、分辨率…

【vue3】实现数据响应式(ref、shallowRef、trigger、reactive、shallowReactive、toRef、toRefs)

一、ref、shallowRef、trigger ref支持所有类型 可以粗略理解为 ref shallowRef triggerRef 1、通过ref获取dom元素 <p ref"_ref">这是ref获取dom元素</p>import {ref,shallowRef, triggerRef} from vueconst _ref ref()console.log(_ref.value?.i…

【Linux】提权问题

目录 一、设置白名单 一、设置白名单 当我们在使用sodo的时候&#xff0c;会发现我们的普通用户是无法用这个指令的&#xff0c;这个是因为这个普通用户还没有在root下是白名单里的用户 接下来我们来看一下怎样设置白名单用户 在root下打开配置文件vim /etc/sudoers 找到第100…

[硬件基础]-555定时器-非稳态多谐振荡器配置

555定时器-非稳态多谐振荡器配置 文章目录 555定时器-非稳态多谐振荡器配置1、概述2、非稳态多谐振荡器的内部工作原理 我们已经在之前的文章中介绍了 555 定时器的单稳态和双稳态操作。 在本文中&#xff0c;我们将讨论第三种配置 - 555 定时器的非稳定模式。 我们将了解如何在…

Apache atlas 元数据管理治理平台使用和架构

1、前言 Apache Atlas 是托管于 Apache 旗下的一款元数据管理和治理的产品&#xff0c;目前在大数据领域应用颇为广泛&#xff0c;可以很好的帮助企业管理数据资产&#xff0c;并对这些资产进行分类和治理&#xff0c;为数据分析&#xff0c;数据治理提供高质量的元数据信息。…

远控项目02:项目的创建以及git的配置

&#x1f482; 个人主页:pp不会算法v &#x1f91f; 版权: 本文由【pp不会算法v】原创、在CSDN首发、需要转载请联系博主 &#x1f4ac; 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 c/MFC远程控制项目系列文章 1、在github创建仓库 2、在本地创建一个空文…

Vue-2.3v-model原理

原理&#xff1a;v-model本质上是一个语法糖&#xff0c;例如应用在输入框上&#xff0c;就是value属性和input事件的合写。 作用&#xff1a;提供数据的双向绑定 1&#xff09;数据变&#xff0c;视图跟着变:value 2&#xff09;视图变&#xff0c;数据跟着变input 注意&a…

PostMan环境变量、全局变量、动态参数使用

一、环境准备 postmanmoco [{"description": "登录认证","request": {"uri": "/login","method": "post","forms": {"user": "admin","password": "a123…

CentOS 7下JumpServer安装及配置(超详细版)

前言 Jumpserver是一种用于访问和管理远程设备的Web应用程序&#xff0c;通常用于对服务器进行安全访问。它基于SSH协议&#xff0c;提供了一个安全和可管理的环境来管理SSH访问。Jumpserver是基于Python开发的一款开源工具&#xff0c;其提供了强大的访问控制功能&#xff0c;…

Qt应用开发(基础篇)——表格视图 QTableView

一、前言 QTableView类继承于QAbstractItemView类&#xff0c;提供了一个表格视图的模型。 视图基类 QAbstractItemView QTableView默认为Model/View实现。 //绑定view和model QStandardItemModel *model new QStandardItemModel(); ui->tableView->setModel(model);//…

手把手教你写一个JSON在线解析的前端网站1

前言 作为一名Android开发&#xff0c;经常要跟后端同事联调接口&#xff0c;那么总避免不了要格式化接口返回值&#xff0c;将其转换为清晰直观高亮的UI样式以及折叠部分内容&#xff0c;方便我们查看定位关键的信息。 一直以来都是打开Google 搜索json格式化关键字&#xf…

【无标题】期权交易的实际操作流程是什么?

期权可以进行双向交易&#xff0c;即投资者认为期权后期会上涨&#xff0c;则可以通过交易软件进行做多买入认购操作&#xff0c;如果认为它后期会下跌&#xff0c;则可以通过交易软件件进行做空买入认沽操作&#xff0c;下文介绍期权交易的实际操作流程是什么&#xff1f; 期权…

2023年中国手机回收量、手机回收价值及行业细分现状分析[图]

手机回收的主要去向包括再销售及环保降解两类。其中进行再交易的二手手机多为9成新及以上手机。二手手机最终去向主要为再销售及环保降解。 2016年以来&#xff0c;我国手机总体出货量持续下滑&#xff0c;2022年全年&#xff0c;国内市场手机总体出货量累计2.72亿部&#xff0…

【代码随想录】算法训练营 第一天 第一章 数组 Part 1

数组基础知识补充 1. 在leecode中&#xff0c;数组一般是以vector容器的形式出现的&#xff0c;虽然vector的底层实现是array&#xff0c;但严格来讲vector是容器&#xff0c;不是数组&#xff1b; 2. 数组元素的删除和增添都需要移动后续元素&#xff0c;而且在实现的角度上…

C++初阶 入门

目录 1.用C的方式写一个Hello World 2.命名空间 2.1什么是命名空间&#xff1f; 2.2使用命名空间 3.C的输入输出 前言&#xff1a;C初阶系列&#xff0c;每一期博主都会使用简单朴素的语言将对应的知识分享给大家&#xff0c;争取让所有人都可以听懂&#xff0c;C初阶系列…