Vue2/Vue3 项目生产环境开启 vue devtools 插件线上调试 vue 组件

news/2025/2/28 12:11:27/文章来源:https://www.cnblogs.com/linx/p/18742966

说到 vue 项目的调试工具,必然少不了 “vue devtools 插件”,此插件就像“手术刀”一样,是开发环境下的一个利器,生产环境一般情况没办法使用。

要在生产环境使用,就必须要一点手段。

前置条件

  1. 安装 Chrome 浏览器,本文编写时使用的 Google Chrome 133 版本。
  2. 安装 vue devtools 插件,本文编写时使用的 vue devtools 6.6.3 版本(Vue DevTools v7 不再支持 vue2 项目调试)。

Vue2 项目开启 vue devtools

以 element-ui 为例:

  1. Chrome 访问 https://element.eleme.cn/#/zh-CN。

  2. 快捷键 F12 启动 开发者工具

  3. 控制台 运行以下代码:

var node;
const walker = document.createTreeWalker(document.body,1);
while ((node = walker.nextNode())) {if (node.__vue__) {const Vue = node.__vue__.$options._base;if (!Vue.config.devtools) {Vue.config.devtools = true;if (window.__VUE_DEVTOOLS_GLOBAL_HOOK__) {window.__VUE_DEVTOOLS_GLOBAL_HOOK__.emit('init', Vue);console.log('==> vue devtools now is enabled');}}break;}
}

正常情况,会看到如下图:

可能出现的情况

运行后不出现 Vue 页面,看不到 vue devtools。比如:

这种情况, 按两次 F12开发者工具 重启下就能解决。

Vue3 项目开启 vue devtools

以 element-plus 为例:

  1. Chrome 访问 https://cn.element-plus.org/zh-CN/component/overview.html。

  2. 快捷键 F12 启动 开发者工具

  3. 控制台 运行以下代码:

var node;
const walker = document.createTreeWalker(document.body,1);
while ((node = walker.nextNode())) {const vm = node.__vue_app__if (vm) {window.__VUE_DEVTOOLS_GLOBAL_HOOK__.apps.push({app: vm,version: vm.version,types: {Comment: Symbol('Comment'),Fragment: Symbol('Fragment'),Static: Symbol('Static'),Text: Symbol('Text'),},})if (window.__VUE_DEVTOOLS_GLOBAL_HOOK__) {window.__VUE_DEVTOOLS_GLOBAL_HOOK__.emit('init', vm);console.log('==> vue devtools now is enabled');}break;}
}

正常情况,会看到如下图:

有些报错,可以忽略。

也可能会代码执行成功,不出现 Vue 页签,还是按两次 F12开发者工具 重启下就能解决。

使用 Chrome Snippets 保存代码片段

  1. 启动开发者工具

  2. 前往 Sources(源代码/来源) 面板

  3. 找到 Snippets(代码段)

  4. 新增片段 New snippet(新代码段)

  5. 输入以下代码,Ctrl + S 保存

  6. 对代码片段鼠标右键,再点击 Run(运行) 即可执行。

function init() {var node;var running = falsetry {const walker = document.createTreeWalker(document.body,1);while ((node = walker.nextNode())) {const vm = node.__vue_app__if (vm) {// Vue3 项目window.__VUE_DEVTOOLS_GLOBAL_HOOK__.apps.push({app: vm,version: vm.version,types: {Comment: Symbol('Comment'),Fragment: Symbol('Fragment'),Static: Symbol('Static'),Text: Symbol('Text'),},})if (window.__VUE_DEVTOOLS_GLOBAL_HOOK__) {window.__VUE_DEVTOOLS_GLOBAL_HOOK__.emit('init', vm);running = true}break;} else if (node.__vue__) {// Vue2 项目const Vue = node.__vue__.$options._base;if (!Vue.config.devtools) {Vue.config.devtools = true;if (window.__VUE_DEVTOOLS_GLOBAL_HOOK__) {window.__VUE_DEVTOOLS_GLOBAL_HOOK__.emit('init', Vue);running = true}}break;}}} catch(err){console.error(err)}if (running) {console.log('%c==> 已开启 vue devtools (可能需要重启 Chrome 开发者工具)', 'color: green;');} else {console.log('%c==> 未检测到 Vue 项目或未检测到 Vue devtools', 'color: red;')}
}
init()

这里保存的 Snippets 代码片段,可以在所有网站运行,只要浏览器不卸载,Snippets 代码片段判断永远都在。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows编程系列:获取系统BIOS信息

在前面的文章中,介绍过WMI的使用 https://www.cnblogs.com/zhaotianff/p/14764740.html在Win32 Provider下面提供了一个Win32_BIOS类,可以获取BIOS信息我们还可以通过SMBIOS标准规范来获取BIOS信息SMBIOS介绍 SMBIOS (System Management BIOS ,系统管理BIOS)是通过系统固件…

【大模型安全】大模型攻击测试案例分析

本节通过对实际案例的研究,直观展示大模型(LLM)攻击测试是如何识别模型中存在的安全隐患。为确保被测大模型系统的安全运行,我们仅执行了无危害的查询操作,目的是发现潜在的安全漏洞和风险点。 案例1: 某互联网厂商LLM存在远程代码执行漏洞(过度代理),攻击者可通过此漏…

谷歌 Chrome 浏览器离线安装 vue devtools 插件

由于某些原因,Chrome 应用商店访问不了,所以只能离线安装 vue devtools 插件,离线安装也有两种方法。 方法一:自编译 vue devtools 插件 这方法要求动手能力强的同学。前往 github 下载 vue devtools 插件源码(https://github.com/vuejs/devtools)。在本地编译源码。编译成…

CRM选型避坑指南:别踩这些常见雷区!

选CRM就像找工作,选错了不仅折腾自己,还浪费时间和钱。 市面上CRM那么多,花里胡哨的功能一堆,价格跨度也大,选起来就像进了迷宫,一不小心就掉坑里。所以今天就聊聊那些常见的选型雷区,教你如何避开这些坑,选到真正适合自己的CRM!这里整理好了最好用CRM系统——简道云 …

医院HIS系统通过互联网调用医保内网(专网)接口

前言其实更准确的主题应该为:如何通过互联网访问专网服务器的http 服务,因为原理是一样的。全国医保刚实行升级时,很多HIS开发人员通过远程医院前置机再跳转医保网进行调试,操作很麻烦,如果能在办公室通过互联网直接访问医保网那就太方便了。全国医保的接口都是通过http方…

No.26 JavaScript--简介

前端3件套:HTML CSS JS 一、JS简介JavaScript 是一种轻量级的脚本语言。所谓“脚本语言”,指的是它不具备开发操作系统的能力,而是只用来编写控制其他大型应用程序的“脚本”。 JavaScript 是一种嵌入式(embedded)语言。它本身提供的核心语法不算很多。1.为什么学JS操控浏…

打造自主高效团队:企业团队协作工具私有化部署指南

企业团队协作工具的私有化部署是指将软件部署在企业自有的服务器上,而非使用公有云或第三方平台。以下是对企业团队协作工具私有化的详细分析: 一、私有化的优势 ● 数据安全可控:企业数据存储在本地服务器,无需上传至第三方平台,有效降低数据泄露风险,满足企业对数据安全…

快收藏!一个技巧从此不再搞混缓存穿透和缓存击穿

在 Redis 中有两个定义:一个缓存击穿、一个缓存穿透,因为二者的名字比较像,因此很容易就搞混了。但本文会给你提供一个记忆的小技巧,帮你彻底区分二者的定义。 在讲这个技巧之前,我们先来了解一下二者的区别。 1.定义与区别缓存穿透(Cache Penetration):缓存穿透是指查…

AQS的release(int)方法底层源码

一、定义 release(int) 是 AQS(AbstractQueuedSynchronizer)中的一个核心方法,用于在独占模式下释放同步状态。如果释放成功,则会唤醒等待队列中的后继节点,使其有机会获取同步状态 1、release(int) 方法的作用功能:释放同步状态(独占模式),并唤醒等待队列中的后继节点…

Telescope:开源系统log可视化界面管理工具

Telescope 是一款网页应用,旨在提供直观的界面以便于浏览日志数据。它能够兼容任何类型的日志,只要这些日志存储在 ClickHouse 中。用户可以轻松配置与 ClickHouse 数据库的连接,并运行查询以高效地过滤、搜索和分析日志。虽然ClickHouse目前作为主要支持的存储后端,但未来…

P3807 【模板】卢卡斯定理/Lucas 定理

纯手写(迫真)//我在写什么?{#include <bits/stdc++.h> using namespace std; typedef long long ll; #define NO cout << "NO" << endl; #define YES cout << "YES" << endl; ll gcd(ll p, ll q) {return (p % q == 0)?…

Centos8与华为USG建立GRE隧道

拓扑需求:centos8与防火墙建立gre隧道 linux端配置: [root@localhost ~]# cat set_gre.sh #!bin/bashinterface_name="gre1" local_ip="10.0.2.2" remote_ip="201.1.1.2" ipaddress="10.10.10.1" peer_address="10.10.10.2/32…