利用 线上环境 在 本地 调试代码

4,626 阅读2分钟

为什么需要使用线上环境进行代码调试?

在日常的开发中,当接口文档出来的时候,前后端可以独立的进行开发,前端可以通过一些线上的mock工具模拟接口,调通页面,减少联调的时间。

但是在一些条件下,是需要利用线上的环境调试的:

  1. 后接口的数据有做了跨域的限制,或者接口需要线上的登录身份(cookie之类)
  2. 再或者已经部署上线的页面出bug了,线下开发没有具体环境调试不了等等。
  3. 其他一些利用线上环境调试更加方便的情景

当我们遇到这些问题时,简单的想法是:先在本地估摸着开发,然后再部署上去线上环境看下结果,然后再接着调试,再部署到线上看下结果......这样子极其繁琐和不方便。此时我们考虑一下,是否可以利用线上环境进行代码调试?

怎么做呢?

具体的想法就是,当我们登录进去线上环境时,线上环境会返回已经部署的代码,在这个过程中,我们可以利用抓包工具,把请求线上已经部署的代码请求给拦截下来,替换为本地代码文件返回给浏览器,只要替换的文件一一对应,线上的环境依旧可以正常跑通,因为这个过程对于浏览器来说,是透明的,所以我们就相当于把本地代码部署到线上环境了,就可以一边开发一边调试啦~

具体的操作就是:

  1. 登录进去线上环境
  2. 利用工具从中间抓包,拦截所要调试的代码请求,返回本地文件。

当然工具有很多种~这里用Fiddler作为例子~

具体实现

1. 找到要调试的线上代码所在文件

比如我要调试的是sureSign() 方法,先在控制台上定位到该方法所在的文件

2. 找到该文件资源所对应的请求

依旧是在控制台查找

3. 在Fiddler里面拦截该请求,并替换返回本地文件

这样子就已经让本地的文件,替代了远程的文件~可以在本地利用远程的环境调节啦啦啦~~

但是如果文件在框架(如vue + webpack)的打包之后,和其他文件有着关联,如果替换一个不起作用,那我们也可以整一个替换掉

先把index.html替换掉

再把js资源替换

这样子就行啦~

当然利用抓包还可以实现很多东西,这个也只是一个开发调试用的小技巧~