前端远程调试方案 Chii 的使用经验分享

前端,远程,调试,方案,chii,使用,经验,分享 · 浏览次数 : 135

小编点评

**Chii 远程调试方案简介** **与 Weinre 相似的远程调试工具** Chii 是与 weinre 一样的远程调试工具,提供与 Weinre 相似的功能,包括: * 监控网站标题、IP、UserAgent 等信息。 * 实时监控页信息,包括请求和响应数据。 * 支持 https 请求。 **使用步骤** 1. 安装 npm:npm install chii -g 2. 启动 Chii 服务:chii start -p 8082 3. 在页面中打开 Chii 链接,例如:xxxx.xxxx.xxx.com/chii/ 4. 在浏览器地址栏中输入以下地址,访问 Chii 监控页面:xxxx.xxxx.xxx.com/chii/ 5. 通过 query 参数控制页面选项,例如启用或禁用调试。 **命令执行项目地址** * 获取生产环境页面访问地址:cp /usr/share/nginx/html/index.html /usr/share/nginx/html/test.html * 使用 sed 命令替换页面标题:sed -i 's#<title>xxxxx</title>#<script src=\"https://unpkg.com/vconsole@latest/dist/vconsole.min.js\"></script>\<script>\var vConsole = new window.VConsole();\

正文

前端远程调试方案 Chii 的使用经验分享

Chii 是与 weinre 一样的远程调试工具 ,主要是将 web inspector 替换为最新的 chrome devtools frontend
监控列表页面可以看到网站的标题链接,IP,useragent,可以快速定位调试页面,监控页信息完善,支持https请求等,开发者工具能看到的都能看到。
本文主要介绍其使用,在电脑运行,通过注入 js 的方式将将远端的日志,请求等同步推送在电脑端查看显示,及命令的执行

项目地址:https://github.com/liriliri/chii

运行监控一览

  • 启动
  • nginx配置
  • 监控列表
  • 监控页

Chii 安装

使用 npm 安装

npm install chii -g

Chii 运行及转发配置

  • 如果是本地直接运行即可:chii start -p 8082

  • 考虑到可能存在的跨域情况,可参考如下配置运行使用

  • 生产环境运行:chii start -p 8082 --base-path /chii -d xxxx.xxxx.xxx.com

    • 结合前缀和域名,不影响生产环境访问,也可以使用生产环境域名访问到chii服务
    • -p 端口
    • -base-path 前缀
    • -d 域名
    • 更多参数见源码
  • 配置转发

    • 若需要调试的网站域名是:xxxx.xxxx.xxx.com,则 nginx 配置其转发 xxxx.xxxx.xxx.com/chii/
    • 如果网站是 https 则将注释处放开
real_ip_header X-Real-IP;
server {
    #location / {
    #    ....
    #}
    location /chii/ {
            real_ip_recursive on;
            proxy_set_header Host $http_host;
            # 运行chii的本地地址
            proxy_pass http://192.168.0.188:8082/chii/;
            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header Host-Real-IP  $http_host;
            #https则将下面注释的放开
            #proxy_set_header X-Forwarded-Proto "https";
            #proxy_set_header X-Forwarded-Ssl on;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
    }
}

访问:https://xxxx.xxxx.xxx.com/chii/ 即可打开调试监控

chii 注入 js 转发开始调试

//注意替换其中的域名
function injectTarget() {
  var e = document.createElement("script");
  e.src = "//xxxx.xxxx.xxx.com/chii/target.js";
  location.href.indexOf("embedded=true") > -1 &&
    e.setAttribute("embedded", "true");
  location.href.indexOf("cdn=true") > -1 &&
    e.setAttribute("cdn", "//cdn.jsdelivr.net/npm/chii/public");
  document.head.appendChild(e);
}
injectTarget();

将其加入到页面中即可,可以通过 query 参数获其他接口参数控制来是否启用
另外如果是要在高速上给火车换轮子:给生产环境运行中的单页应用中使用思路,可参考下面命令
复制一个 html,然后注入,访问 test.html 即可

# nginx容器内部路径,根据实际情况调整
cp /usr/share/nginx/html/index.html /usr/share/nginx/html/test.html
echo "<script>function injectTarget(){var e=document.createElement('script');e.src='//xxxx.xxxx.xxx.com/chii/target.js';location.href.indexOf('embedded=true')>-1&&(e.setAttribute('embedded','true'));location.href.indexOf('cdn=true')>-1&&e.setAttribute('cdn','//cdn.jsdelivr.net/npm/chii/public');document.head.appendChild(e)}injectTarget();</script>" >> /usr/share/nginx/html/test.html

其他调试方案与工具

vConsole

项目地址:https://github.com/Tencent/vConsole

一个轻量、可拓展、针对手机网页的前端开发者调试面板。
vConsole 是框架无关的,可以在 Vue、React 或其他任何框架中使用。
现在 vConsole 是微信小程序的官方调试工具。
注入 js,会显示一个图标,可以在设备端查看日志等信息

  • vConsole 的安装使用

最简单的方式是使用 cdn 引入然后初始化

<script src="https://unpkg.com/vconsole@latest/dist/vconsole.min.js"></script>
<script>
  // VConsole 默认会挂载到 `window.VConsole` 上
  var vConsole = new window.VConsole();
</script>

再或者需要先加载 vConsole 也可以使用 sed 命令替换标题注入 js

cp /usr/share/nginx/html/index.html /usr/share/nginx/html/test.html
sed -i 's#<title>xxxxx</title>#<script src="https://unpkg.com/vconsole@latest/dist/vconsole.min.js"></script>\n<script>\n  var vConsole = new window.VConsole();\n</script>#' ./test.html
  • 运行后如图所示

weinre 的安装使用

项目地址:weinre

一款基于 Web 开发的远程调试工具。是 Apache Cordova 项目的一部分。
经常有断线情况,不再维护,不再推荐

  • 安装
npm -g install weinre
  • 启动
weinre --httpPort 9090 --boundHost -all-
  • 注入 js
<script src="http://localhost:9090/target/target-script-min.js#anonymous"></script>

当访问调试页面时打开 http://localhost:9090/client/#anonymous 接口查看到被调试的页面监控链接,访问即可

sentry

是一种开源的错误跟踪和监控解决方案,用于帮助开发者及时发现、修复和预防应用程序中的错误和异常。
集成容易,但是用好还是不容易,一些关键性的日志及设置用户上下文的使用还是蛮重要的
安装使用可以参考这篇文章

写在最后

文章始于客户反馈产品移动端白屏,因为是在生产环境,故想办法尝试了下chii,用chii排除了一些错误答案,生产环境还是需要反馈用户的积极配合才行
目前只能是用sentry记录下关键性日志分析了,虽然因客户没有时间来配合最后也没有解决问题,但感觉体验还是蛮好的,特此分享一二。

与前端远程调试方案 Chii 的使用经验分享相似的内容:

前端远程调试方案 Chii 的使用经验分享

前端远程调试方案 Chii 的使用经验分享 Chii 是与 weinre 一样的远程调试工具 ,主要是将 web inspector 替换为最新的 chrome devtools frontend 监控列表页面可以看到网站的标题链接,IP,useragent,可以快速定位调试页面,监控页信息完善,支

debug技巧之远程调试

一、前言 大家好啊,我是summo,今天给大家分享一下我平时是怎么调试代码的,不是权威也不是教学,就是简单分享一下,如果大家还有更好的调试方式也可以多多交流哦。 当我们的应用发布到线上之后,就不能随意启停了,但如果线上出现了BUG怎么办呢?大多数时候我们会借助线上打印的日志进行排查问题,如果幸运的话

debug技巧之使用Arthes调试

一、前言 大家好啊,我是summo,今天给大家分享一下我平时是怎么调试代码的,不是权威也不是教学,就是简单分享一下,如果大家还有更好的调试方式也可以多多交流哦。 前面我介绍了本地调试和远程调试,今天再加一种:利用Arthes进行调试。 二、Arthes是什么? 以下是Arthes官网原文: 通常,本

windows离线部署VSCode在Centos7上的远程开发环境

前言 公司一直使用的是ssh+vim的远程开发方式,习惯了vim之后已经非常方便了。但是还是想尝试一下VSCode的开发方式。就我而言,原因如下 漂亮的语法高亮,并且有补全 基于语法解析的引用查找(尽管在我们项目的场景下还是一坨翔) Ctrl+Shift+F的快速搜索 可视化调试,可以直接在代码中下

浅谈服务接口的高可用设计

作为一个后端研发人员,开发服务接口是我正常不过的工作了,这些接口不管是面向前端HTTP或者是供其他服务RPC远程调用的,都绕不开一个共同的话题就是“高可用”,接口开发往往看似简单,但保证高可用这块实现起来却不并没有想想的那么容易,接下来我们就看一下,一个高可用的接口是该考虑哪些内容,同时文中有不足的欢迎批评指正。

C#的奇技淫巧:利用WinRM来远程操控其他服务器上的进程

前言:有时候远程服务器的进程你想偷偷去围观一下有哪些,或者对一些比较调皮的进程进行封杀,或者对一些自己研发的服务进行远程手动启动或者重启等,又不想打开远程桌面,只想悄咪咪地执行,那也许下面的文章会对你有启发。 前提条件 确保远程服务器(服务端)已启用WinRM。在远程服务器上运行以下命令可以启用和配

Asp-Net-Core学习笔记:gRPC快速入门

## 前言 此前,我在做跨语言调用时,用的是 Facebook 的 Thrift,挺轻量的,还不错。 >Thrift是一种接口描述语言和二进制通讯协议,它被用来定义和创建跨语言的服务。它被当作一个远程过程调用(RPC)框架来使用,是由Facebook为“大规模跨语言服务开发”而开发的。它通过一个代码

如何使用iptables防火墙模拟远程服务超时

# 前言 超时,应该是程序员很不爱处理的一种状态。当我们调用某服务、某个中间件、db时,希望对方能快速回复,正确就正常,错误就错误,而不是一直不回复。目前在后端领域来说,如java领域,调用服务时以同步阻塞调用为主,此时一般会阻塞当前线程,等待结果。如果我们设置了超时时间还好,一段时间等不到就报错了

前端远程办公系列 —— 整体介绍

整体介绍 前言 有些公司需要你有远程办公的经验 远程办公是某些公司和组织的一种工作方式。比如公司运作以天津为根据地,还有一些团队在武汉,忙不过来时还有外包 本系列就以前端工程师的视角,以一个真实的场景来说一下这个事情。会说遇到了什么问题、如何协作、用到什么新工具,什么技术... 背景 张三,一直从事

各开发语言DNS缓存配置建议

作者:翟贺龙 一、背景 在计算机领域,涉及性能优化动作时首先应被考虑的原则之一便是使用缓存,合理的数据缓存机制能够带来以下收益: 1.缩短数据获取路径,热点数据就近缓存以便后续快速读取,从而明显提升处理效率; 2.降低数据远程获取频次,缓解后端数据服务压力、减少前端和后端之间的网络带宽成本; 从 C