56 如何调试 npm run build 的代码/如何在测试环境,预发布环境进行调试

前言

测试环境/预发布环境 如何进行调试

这里主要是 提及一些一个 模拟的生产环境, 应该如何测试

比如 上线之前, 或者 线上出现问题, 需要 hotfix 的场景下

我们应该怎么 在一个 测试环境/预发布 的环境下面 进行一个模拟的调试呢?

对于 如果是没有网络请求的项目, 甚至可以直接使用文件浏览器的服务进行调试

 

 

devtool 配置为 eval-source-map

首先是 业务项目这边的 devtools 的配置, 编译的时候配置 devtool 为 eval-source-map

配置为 source-map 貌似不行, 还原出来的 vue 少 javascript 相关的部分

然后进行 npm run build 打包

可以看到 打包的结果默认配置下 npm run build 的差异在于, 这里加了很多调试 需要的上下文

b477431609db419a88a78f369e798285.png

 

然后将 dist 发布到 nginx 之类的 静态资源 + 代理服务器

然后 进行访问 http://localhost:8081/index.html#/HelloWorld 

从下面可以看到 浏览器解析了很多个 HelloWorld.vue 着多个对应的就是之前 “npm run serve” 中生成的那一套七八个 js 文件, 一个组合文件, 三个代理文件, 三个真实的 html, js, css 文件

我们这里关注的是 这个组合好的 HelloWorld.vue 的源码文件, 可以依次找一下 这几个文件, 找到 HelloWorld.vue 的源码文件, 如下图 这就是

ab59941bf48d46a79e0cf39d80f8be65.png

 

然后 打上断点, 就是 真实的调试上下文了

可以看到, 源码的位置是正常的, 上下文的变量名称是正常的, 查看其它依赖的 js 是正常的

这里调试 就和在本地 npm run serve 进行调试时一样的了

fe6cb7604cbf4b80a5a187a98cce6a6b.png

 

 

devtool 配置为 source-map

配置 devtool 为 source-map 不知道为啥 拿不到完整的调试上下文

可能是 需要一个 webpack 的服务器 来解析代理文件?

但是 这里也描述一下 这个调试的流程

更新 devtool 的配置为 source-map, 然后进行 编译, 编译的结果如下, 可以看到一个 js 文件对应了一个 js.map 文件, 这个文件就是 source-map 文件

539889187c5a48c5897c2d4d01333a4c.png

 

然后将 dist 发布到 nginx 之类的 静态资源 + 代理服务器

访问服务 http://localhost:8081/index.html#/HelloWorld

但是, 从 hello-package 下面看到, HelloWorld.vue 分别点开这几个, 发现少了一部分文件

这个不知道是 什么情况

f9bf7a2ddfc748f3a294b6fc469cfc35.png

 

 

浏览器这边 启用 source-map 的配置

这种需要使用 source-map 的场景下面需要进行 浏览器的配置

首先是 Sources - 设置, 下面配置 启用 javascript source-mapping

1be655b3760f4b4c8eae4146d8741b90.png

 

然后观察的方式为 Option - 更多工具 - 开发者资源

6e1222bc1691411f848b7c391ddb7f81.png

 

在该面板中可以看到, js.map 是正常加载了的

517f99a601ae44a3911382b81e4fd15e.png

 

js.map 文件不存在的情况下 情况如下, 首先是 左边没有 hello-package 这个分组

其次是 开发者资源 下面, 可以看到 Source Map 的加载是失败了

da1ccaa7951c4b639b8d5cc717ff104d.png

 

 

直接在文件服务中访问没有网络请求的项目

更新 publicPath 为 “./” 

以当前目录为基目录, chrome 去寻找 js, css 等等, 可以正常找到

e4e6c97d31bf41b3bb46ea112c67f79a.png

 

调试现象如下, 可以看到 可以正常调试, 也没有基于 外部的 http, tcp 服务, 是直接基于文件浏览服务

dcb5f6987e5544e585a138cb28ca815c.png

 

 

调试的另外一个维度的考虑就是 npm run build 的时候配置不最小化 js

这个可以通过 vue.config.js 直接配置 webpack.optimization.minimize 为 false

然后 再禁用掉 sourceMap 的生成, 这里直接配置 productionSourceMap 为 false

da590c25ea954865929bd3d74d063d04.png

 

编译之后的结果如下, 可以看到 是进行了一个友好的格式化的

490f6e870bf7448e8fa826b0dd24f58a.png

 

这个调试, 就是直接是针对 npm run build, 生成的目标 js 进行的调试

然后 定位到目标问题之后, 需要开发人员进行一个逻辑上的映射, 去找对应于源码的哪里, 然后 再进行调整, 修复

dd71da19b6544f48a964b60c57892142.png

 

 

另外去掉 webpack 的 minimize 还有另外一种方式, 增加一个 VUE_CLI_TEST 的环境变量

具体的处理的地方是在这里, prod.js 里面进行的一个逻辑上的更新, 没其他的需求的话, 直接在 vue.config.js 中配置就好了

8f43ed8eeebd41a6b76b5eb5619d13a5.png

 

 

完 

 

 

 

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

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

相关文章

【yy讲解PostCSS是如何安装和使用】

🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…

STM32 uC/OS-III

What is uC/OS-III? C/OS-III 的发音为“Micro C O S Three”,这意味着 C/OS-III 是基于 C 语言编写的第三代 小型操作系统,当然这里所说的第三代是相对于 C/OS 的前两个版本 C/OS 和 C/OS-II 而言 的,后面也会介绍这三个版本的差别。C/OS/…

Vue前端项目打包

4.1编译打包 npm run build 4.2 前端项目 nginx的配置文件default.conf 和 dockerfile default.conf upstream wms-app { server 192.168.14.3:3666 ; server 192.168.14.3:3777 ; } server { listen 80; listen [::]:80; server_name localhost; access_log /var/log/nginx…

毛利率低从哪些维度分析?零售服装行业如何提升毛利率?

在零售服装行业中,毛利率是评估公司盈利能力的关键指标之一。然而,某服装公司在一段时间内销售总额达到5878.28万,但其总毛利额仅为591.26万,平均毛利率仅为10.06%。这一数字明显低于了服装行业通常的毛利率范围(一般在…

语义分割——Dark Zurich数据集

一、重要性及意义 首先,Dark Zurich为语义分割提供了大量真实且多样化的图像数据。该数据集包含了在夜间、黄昏和白天拍摄的大量图像,涵盖了不同光照条件和场景下的图像变化。这些图像数据不仅丰富了语义分割任务的数据集,也为模型提供了更全…

政安晨:【Keras机器学习实践要点】(七)—— 使用TensorFlow自定义fit()

目录 前言 导入 来一个简单例子 下沉到更低的级别 支持样本权重和类别权重 提供您自己的评估步骤 总结:一个端到端的GAN示例 政安晨的个人主页:政安晨 欢迎 👍点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras机器学习实战 希望政安晨的…

【Linux】TCP网络套接字编程+守护进程

文章目录 日志类(完成TCP/UDP套接字常见连接过程中的日志打印)单进程版本的服务器客户端通信多进程版本和多线程版本守护进程化的多线程服务器 日志类(完成TCP/UDP套接字常见连接过程中的日志打印) 为了让我们的代码更规范化&…

3万字80道Java基础经典面试题总结(2024修订版)

大家好,我是哪吒。 本系列是《10万字208道Java经典面试题总结(附答案)》的2024修订版。 目录 1、说说跨平台性2、Java是如何实现跨平台性的?3、JDK 和 JRE 有什么区别?4、为何要配置Java环境变量?5、Java都有哪些特性&#xff1f…

(八)Gateway服务网关

Gateway服务网关 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目,该项目是基于 Spring 5.0,Spring Boot 2.0 和 Project Reactor 等响应式编程和事件流技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的 API 路由管理方式。…

Linux/Headless

Headless Enumeration nmap 用 nmap 扫描了常见的端口,发现对外开放了 22 和 5000,而且 nmap 显示 5000 端口的服务是 upnp? ┌──(kali㉿kali)-[~/vegetable/HTB/headless] └─$ nmap 10.10.11.8 Starting Nmap 7.93 ( https://nmap.or…

打造安全医疗网络:三网整体规划与云数据中心构建策略

医院网络安全问题涉及到医院日常管理多个方面,一旦医院信息管理系统在正常运行过程中受到外部恶意攻击,或者出现意外中断等情况,都会造成海量医疗数据信息的丢失。由于医院信息管理系统中存储了大量患者个人信息和治疗方案信息等,…

神奇的css radial-gradient

使用css radial-gradient属性,创造一个中间凹陷进去的形状。如下图 background: radial-gradient(circle at 50% -0.06rem, transparent 0.1rem, white 0) top left 100% no-repeat;

vue系列——v-on

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>v-on指令</title> </head> <body>…

docker部署DOS游戏

下载镜像 docker pull registry.cn-beijing.aliyuncs.com/wuxingge123/dosgame-web-docker:latestdocker-compose部署 vim docker-compose.yml version: 3 services:dosgame:container_name: dosgameimage: registry.cn-beijing.aliyuncs.com/wuxingge123/dosgame-web-docke…

贪吃蛇:从零开始搭建一个完整的小游戏

目录 导语&#xff1a; 一、游戏框架 二、蛇的实现 三、绘制游戏界面 四、食物 五、移动蛇 六.得分系统&#xff0c;是否吃到食物 七、检查碰撞 八、处理按键事件 九、得分系统 十、游戏状态管理 导语&#xff1a; 贪吃蛇这个经典的小游戏&#xff0c;我上学的时候就…

设计模式-概述篇

1. 掌握设计模式的层次 第1层&#xff1a;刚开始学编程不久&#xff0c;听说过什么是设计模式第2层&#xff1a;有很长时间的编程经验&#xff0c;自己写了很多代码&#xff0c;其中用到了设计模式&#xff0c;但是自己却不知道第3层&#xff1a;学习过了设计模式&#xff0c;…

【机器学习】无监督学习与聚类技术:解锁数据的隐藏结构

无监督学习介绍 无监督学习&#xff0c;作为机器学习的一大分支&#xff0c;专注于探索未经标记的数据集中的潜在结构。不同于有监督学习&#xff0c;无监督学习不依赖于外部提供的标签或输出结果&#xff0c;而是通过数据本身的特征来寻找模式、聚类或降维。这种学习方法在多…

03-MySQl数据库的-用户管理

一、创建新用户 mysql> create user xjzw10.0.0.% identified by 1; Query OK, 0 rows affected (0.01 sec) 二、查看当前数据库正在登录的用户 mysql> select user(); ---------------- | user() | ---------------- | rootlocalhost | ---------------- 1 row …

PI案例分享--2000A核心电源网络的设计、仿真与验证

目录 摘要 0 引言 1 为什么需要 2000A 的数字电子产品? 2 2000A 的供电电源设计 2.1 "MPM3698 2*MPM3699"的 MPS扩展电源架构 2.2 使用恒定导通时间(COT)模式输出核心电压的原因 2.3 模块化 VRM 的优势 2.4 用步进负载验证2000A的设计难点 2.4.1 电源网络 …

初始Java篇(JavaSE基础语法)(5)(类和对象(上))

个人主页&#xff08;找往期文章包括但不限于本期文章中不懂的知识点&#xff09;&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 目录 面向对象的初步认知 面向对象与面向过程的区别 类的定义和使用 类的定义格式 类的实例化 this引用 什么是this引用&#xff1f; this引用…