成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我本地明明是好的啊?前端怎么本地復現線上問題?

開發 前端
數據不同。本地更多的是用的 test 環境的數據,live 用的真實環境的數據。不同數據,頁面的渲染以及交互可能是不同的。

試想一下,某天 QA 給你報了一個線上問題,那你會怎么做?

我本地明明是好的啊?肯定是誤報!

當然這種情況大部分是你內心的 YY,事實上是真的有問題。

看完 QA 的復現路徑,你嘗試在本地復現,然后你本地卻怎么也無法復現。

究其原因,還是 live 和本地的環境差異導致,這里的原因就可能有很多,我理解主要是以下兩點:

  • 數據不同。本地更多的是用的 test 環境的數據,live 用的真實環境的數據。不同數據,頁面的渲染以及交互可能是不同的。
  • 打包配置不同。前端在使用一些打包工具,比如 webpack 的時候,一般會區分 dev 和 prod 環境。不同的環境配置不一樣,比如 dev 環境需要開啟熱更新,prod 環境需要做一些代碼壓縮。
  • ...

使用 nginx 本地部署我們打包出來的代碼

對于上述的第二點,假如要復現的話,也很簡單,只需要將我們本地 build 出來的代碼跑起來,不就可以了?這里我們使用 nginx 本地部署我們打包出來的代碼。

具體的安裝 nginx 的流程,我們這里不做討論,請各位看官自行 Google。如果是 Mac,并且你安裝了 brew。如下:

brew install nginx

第一步,打包你的代碼。

圖片

第二步,修改你的 nginx? 配置文件。Mac 是 /usr/local/etc/nginx/nginx.conf。修改 server root 中的配置,指向你項目打包后的靜態文件存放的地址。

server {
listen 8080;
server_name localhost;
location / {
- root html/static;
# 項目打包后的靜態文件存放的地址
+ root /Users/guangpingfeng/Documents/shopee/projects/yapi;
index index.html index.htm;
}
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}

第三步,啟動 nginx。至此,你就可以通過 http://0.0.0.0:8080 訪問你的頁面了,其跟正式環境的前端打包資源是一致的。

# 啟動
nginx

其它關于 nginx 更多命令:

  • 退出服務:nginx -s quit
  • 強制關閉服務:nginx -s stop
  • 重載服務:nginx -s reload  (重啟,服務不會中止)
  • 驗證配置文件:nginx -t
  • 使用配置文件:nginx -c
  • 使用幫助:nginx -h

有沒有簡單一點的——whistle

這里不對 whistle 的過多介紹,感興趣的可以看我之前的一篇文章——前端應該知道的web調試工具——whistle[1]。

使用 whistle 的思路,就是使用本地打包出來的資源代理到線上。

以上面的例子為例。我們希望線上訪問 static/prd? 目錄下的靜態資源能夠訪問到本地打包出來的資源。只需要配置這么一條規則(這里演示的域名我都使用 www.test.com)。whistle 會根據匹配 url 的剩余路徑自動補齊本地文件路徑,并自動忽略后面的請求參數:

www.test.com/static/prd file:///Users/projects/yapi/static/prd

比如訪問 https://www.test.com/static/prd/lib3@d380218b438aef3811b2.js? 會代理到本地的 file:///Users/projects/yapi/static/prd/lib3@d380218b438aef3811b2.js。

這個是非常有用的,但是有一些時候,你會發現打包出來的 md5 串不一樣,這種情況可以使用通配符匹配的方式。

匹配模式必須以 ^ 開頭(如果需要限制結束位置可以用 ,為通配符,支持通過0...9 獲取通配符匹配的字符串,其中 $0 表示整個請求 url。

上面的例子的規則就可以表示如下:

^www.test.com/prd/**.*.* file:///Users/projects/yapi/static/prd/$1.$3

在訪問 www.test.com/prd/index.xxxx.js 的時候,實際上訪問的是 file:///Users/projects/yapi/static/prd/index.js。(注意,這個時候,本地打包出來的代碼是不帶有 md5 的)。

live 數據和本地環境不同

這種情況,最快的方式,就是讓 QA 給我復制一份 live 的數據,我直接把接口返回的數據代理到本地請求復現。這個通過 whistle 其實可以很簡單實現,不展開細說。

另外,我們平時開發,實際上就是本地起了一個服務,用 webpack 做構建時,習慣引入 webpack-dev-server 做內存靜態服務器,其提供了 proxy 負責做一層代理,我們通過匹配后端接口,然后通過 target 指向 live 環境。

proxy: {
'/api': {
target: `https://www.test.com,
changeOrigin: true,
onProxyRes(proxyRes, _, res) {
// ****
},
},
},

同理,完全可以用 whistle 進行解決,一條規則搞定。

^http://0.0.0.0:9528/api/*** https://www.test.com/api/$1

最后

你有遇到過,本地沒有問題,線上有問題么?你們一般是怎么解決的呢?希望本文能夠給你一些思路。

參考

  • 用whistle實現map local[2]
  • vue項目打包本地后通過nginx解決跨域??[3]

參考資料

[1]前端應該知道的web調試工具——whistle: https://juejin.cn/post/6861882596927504392。

[2]用whistle實現map local: https://juejin.cn/post/6844903600611819534。

[3]vue項目打包本地后通過nginx解決跨域??: https://juejin.cn/post/6956774987722129416。

責任編輯:姜華 來源: 前端雜貨鋪
相關推薦

2017-12-01 10:13:42

前端操作上傳

2020-04-28 09:46:34

線上問題排查

2024-02-01 08:38:19

項目代碼CICD

2017-12-28 15:20:50

2022-07-27 07:32:28

Debug版本arthas

2020-07-20 09:04:05

Java語言Vue

2021-02-22 17:13:47

HTTP1.1協議

2021-08-07 07:23:08

Webpack中間件模型

2022-10-19 11:17:35

2021-02-02 10:53:16

Python編程開發

2020-12-16 08:33:58

Excel數據分析FineBI

2024-07-12 09:35:38

前端工具檢驗

2018-04-16 16:31:56

前端開發從零開始

2025-04-29 02:50:00

IntelliJIDEA遠程調試

2019-07-18 08:00:49

對象存儲IHS Markit

2021-07-02 07:06:20

調試代碼crash

2023-06-15 14:45:29

2024-03-18 09:24:00

索引失效SQL

2012-05-24 14:58:55

開源代碼

2020-10-20 10:14:01

JVM內存模型
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲欧美精品 | 在线只有精品 | 免费一区二区 | 亚洲精品播放 | 成人小视频在线免费观看 | 国产精品中文字幕在线观看 | 影音先锋中文字幕在线观看 | 日本中文字幕在线观看 | 日韩理论电影在线观看 | 欧美日韩在线免费观看 | 国产精品123区 | 国产在线精品一区二区三区 | 中文字幕一区二区三区乱码在线 | 欧美一区二区三区国产精品 | 伊人久久免费 | 亚洲欧美精品一区 | 亚洲精久 | 天天爽网站 | 蜜桃av一区二区三区 | 精品久久久久久久久久久下田 | 91在线精品一区二区 | 国产一区二区三区四区五区加勒比 | 久草网视频 | 亚洲免费观看 | 国产精品欧美一区二区 | 精产嫩模国品一二三区 | 欧美精品a∨在线观看不卡 国产精品久久国产精品 | 亚洲成人日韩 | 亚洲色综合 | 亚洲国产一区二区三区 | 中文成人在线 | 国产91精品久久久久久久网曝门 | 亚洲一区二区三区在线免费观看 | 国内毛片毛片毛片毛片 | 国内精品一区二区 | 亚洲福利一区二区 | 久久黄色精品视频 | 日韩aⅴ在线观看 | 成人毛片视频在线播放 | wwwxx在线观看| 中文字幕免费观看 |