精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

我是如何調試 Webpack 問題的

開發 前端
思考一下,express 架構的特點就是 —— 基于中間件的洋蔥模型,而中間件之間通過 next 函數調起下一個中間件。

[[415970]]

事情是這樣的,前兩天有個小伙伴問我:「為啥我的 webpack 運行完看不到我寫的頁面,而是:」

嗯?文件列表頁?好吧,這種情況我似乎沒遇到過,一下子沒法給出答案,只能要來關鍵代碼:

重點看看 webpack.config.js 配置,用到 devServer + HMR 功能,其中:

  • Webpack 版本為 5.37.0
  • webpack-dev-server 版本為 3.11.2

看了半天,沒問題呀,給了幾個紙糊的建議還是解決不了問題,剛好在開會這事就暫且放下了。過了一會,小伙伴興沖沖跑過來跟我說經過一番盲猜,問題被解決了:

  • output.publicPath = '/' 時一切正常
  • output.publicPath = './' 時出錯,返回文件列表頁

啊?這玩意還會影響 devServer 的效果,直覺告訴我不應該啊。

emmm,成功勾起我的好奇心了,雖然寫過一些 Webpack 源碼分析的文章,但 webpack-dev-server 確實不在我的知識范圍,好在我有秘籍《如何閱讀源碼 —— 以 Vetur 為例》,是時候展示真正的技術了!

第一步:定義問題

先復盤一下問題發生的過程:

  • webpack.config.js 同時配置了 ouput.publicPath 與 devServer
  • 運行 npx webpack serve 啟動開發服務器
  • 瀏覽器訪問 http://localhost:9000 沒有按預期返回用戶代碼,而是返回了文件列表頁面;但如果恢復 output.publicPath 的默認配置,一切如常

講道理, ouput.publicPath 應該只是影響了最終產物引用的路徑,試試命令行工具運行 curl 檢測首頁返回的內容:

Tips:有時候可以試試繞過瀏覽器的復雜邏輯,用最簡單的工具驗證 http 請求返回的內容。

可以看到,請求 http://localhost:9000 地址返回一大串 html 代碼,且頁面的 title 為 listing directory —— 也就是我們看到的文件列表頁面:

雖然不知道這是在那一層生成的,但可以肯定絕對不是我寫的,而且這是在 HTTP 層面發生的。

所以問題的核心就是:「為何 Webpack 的 output.publicPath 會影響 webpack-dev-server 的運行效果」?

第二步:回顧背景

帶著問題我又 review 了一遍 Webpack 官方文檔。

publicPath配置

首先 output.publicPath 是這么描述的:

This is an important option when using on-demand-loading or loading external resources like images, files, etc. If an incorrect value is specified you'll receive 404 errors while loading these resources.

大意就是,這是一個控制按需加載或資源文件加載的選項,如果對應的路徑資源加載失敗時會返回 404。

 

 

 

嗐,其實這段描述就非常不明所以了,簡單理解 output.publicPath 會改變產物資源在 html 文件的路徑,比如說 Webpack 編譯完生成了 bundle.js 文件,默認情況下寫到 html 的路徑是:

  1. <script src="bundle.js" /> 

如果設置了 output.publicPath 值,就會在路徑前增加前綴:

  1. <script src="${output.publicPath}/bundle.js" /> 

看起來很簡單。

devServer配置項

再來看看 devServer 配置:

This set of options is picked up by webpack-dev-server and can be used to change its behavior in various ways.

大意就是,devServer 配置最終會被 webpack-dev-server 消費,而 webpack-dev-server 提供了包括 HMR —— 模塊熱更新在內的 web 服務。

感受一下,包括 vue-cli、create-react-app 之類的腳手架工具底層都依賴于 webpack-dev-server ,它的作用和重要性就可想而知了吧。

第三步:分析問題

按照現有的情報,加上我對 HTTP 協議的理解,可以基本推斷問題必然是出在 webpack-dev-server 框架處理首頁請求的邏輯上,大概率是 output.publicPath 屬性影響到首頁資源的判定邏輯,導致 webpack-dev-server 找不到對應的資源文件,返回兜底的文件列表頁面。

嗯,我覺得靠譜,那就沿著這個思路挖一挖源碼,找到具體原因吧。

第四步:分析代碼

結構分析

書上得來終須淺,debug 還需看源碼啊,啥都別說了先打開 webpack-dev-server 包的代碼看看內容吧:

Tips: 讀者也可以試試 clone webpack-dev-server 倉庫的代碼,有驚喜~~

項目結構并不復雜,按 Webpack 的習慣可以推斷主要代碼都在 lib 目錄:

cloc 是一個非常好用的代碼統計工具,官網:https://www.npmjs.com/package/cloc

代碼量也就 2000 出頭,還好還好。

接下來再打開 package.json 文件,看看有哪些 dependency,一個個捋過去之后,與我們的問題強相關的依賴有:

  • express:應用不用多介紹了吧
  • webpack-dev-middleware:這個應該大多數人沒有注意過,從官網文檔判斷這是一個橋接 Webpack 編譯過程與 express 的中間件
  • serve-index:「提供特定目錄下文件列表頁面的 express 中間件」!!!
  • 按照這個描述,這鍋肯定出在 serve-index 的調用上啊,感覺離答案很近了。

局部分析

切入點:驗證 serve-index 包的作用

經過上面的分析,雖然我還不知道問題具體出在哪里,但大致可以判定跟 serve-index 包強相關,先搜一下 webpack-dev-server 在哪些地方引用這個包:

很幸運,只在 lib/Server.js 文件中用到,那就簡單多了,「靜態分析」調用語句前后的語句,大致上可以推導出:

  • serveIndex 調用被包裹在 this.app.use 內,推測 this.app 指向 express 示例,use 函數用于注冊中間件,所以整個 serveIndex 就是一個中間件
  • 除 setupStaticServeIndexFeature 外,Server 類型中還包含了其它命名為 setupXXXFeature 的函數,基本上都用于添加 express 中間件,這些中間件組合拼裝出 webpack-dev-server 提供的 HMR、proxy、ssl 等功能

也看不出別的啥了,先做個對照實驗,運行起來「動態分析」代碼的實際執行過程,驗證到底是不是這個地方出錯吧。先在 serveIndex 函數之前插入 debugger 語句,之后:

  • 先按照正常情況,也就是 output.publicPath = '/' 執行 ndb npx webpack serve,結果是如常打開了頁面,沒有命中斷點,沒有中斷
  • 再按照 ouput.publicPath = './' 執行 ndb npx webpack serve,進入斷點:

Tips: ndb 是一個開箱即用的 node debugger 工具,不需要做任何配置就能調試 node 應用,非常方便

OK,答案揭曉了,在 ouput.publicPath = './' 場景下會命中這個中間件,執行 serveIndex 函數返回文件目錄列表,這很 make sense。

不過,作為一個有追求的程序員怎么會止步于此呢,我們繼續往下挖呀:到底是那一段代碼決定了流程會不會進入 serveIndex 中間件?

切入點:確定 serveIndex 的上游中間件

思考一下,express 架構的特點就是 —— 基于中間件的洋蔥模型,而中間件之間通過 next 函數調起下一個中間件。

[[415971]]

嗯,有思路了,我們沿著 webpack-dev-server 的 middleware 隊列,找到 serveIndex 之前都有哪些中間件,分析這些中間件的代碼應該就能解答:

到底是那一段代碼決定了流程會不會進入 serveIndex 中間件?

但是,express 中間件架構下,從 next 調用到實際中間件函數隔著很遠的調用鏈路,很難通過斷點的調用堆棧判斷出上一級中間件,以及更更上一級中間件在哪里啊:

這時候不能硬剛,得換一個技巧了 —— 找到創建 express 示例的代碼,用魔法包裹住 use 函數:

Tips: 這種技巧在某些復雜場景下特別有用,比如我在學習 Webpack 源碼的時候,就經常配合 Proxy 類對 hook 植入 debugger 語句,追蹤鉤子被誰監聽,在哪里被觸發

通過這種重寫函數,植入斷點的方式,我們就能輕松追溯到 webpack-dev-server 用到了哪些中間件,以及中間件注冊的順序:

  1. setupCompressFeature => 注冊資源壓縮中間件 
  2. setupMiddleware => 注冊 webpack-dev-middleware 中間件 
  3. setupStaticFeature => 注冊靜態資源服務中間件 
  4. setupServeIndexFeature => 注冊 serveIndex 中間件 

可以看到,在當前 Webpack 配置下總共注冊了這四個中間件函數,按照 express 的執行邏輯這四個中間件會按注冊順序從上往下執行,所以 serveIndex 函數的直接上游就是 setupStaticFeature 注冊的靜態資源服務中間件了。

繼續看看 setupStaticFeature 函數的代碼:

這里只是調用標準化的 [express.static](https://expressjs.com/en/starter/static-files.html) 函數,注入靜態資源服務功能,如果這個中間件運行的時候按路徑找不到對應的文件資源,會調用下一個中間件繼續處理請求,看起來跟我們的問題沒啥關系。

繼續往上,看看 setupMiddleware 函數:

注冊了 webpack-dev-middleware,從名字就可以看出這個中間件跟 webpack-dev-server 應該關系匪淺,那就繼續打開 webpack-dev-middleware 看看里面的代碼:

我去。。。也不少啊,這看起來太費勁了,我只是想找到這個 bug 的原因,沒必要全看吧!那就直接搜關鍵詞 publicPath 試試吧:

比較幸運,publicPath 關鍵字出現的頻率還是比較少的:

  • webpack-dev-middleware/lib/middleware.js 文件中被使用了 1 次
  • webpack-dev-middleware/lib/util.js 文件中被使用了 23 次

那,就先挑軟柿子捏,看看 middleware.js 文件中是怎么用的:

  1. const { getFilenameFromUrl } = require('./util'); 
  2.  
  3. module.exports = function wrapper(context) { 
  4.   return function middleware(req, res, next) { 
  5.     function goNext() { 
  6.       // ... 
  7.       resolve(next()); 
  8.     } 
  9.     // ... 
  10.     let filename = getFilenameFromUrl( 
  11.       context.options.publicPath, 
  12.       context.compiler, 
  13.       req.url 
  14.     ); 
  15.  
  16.     if (filename === false) { 
  17.       return goNext(); 
  18.     } 
  19.  
  20.     return new Promise((resolve) => { 
  21.       handleRequest(context, filename, processRequest, req); 
  22.       // ... 
  23.     }); 
  24.   }; 
  25. }; 

注意代碼中有一個邏輯,就是調用 util 文件的 getFilenameFromUrl 函數,并判斷返回的 filename 值是否為 false,是的話調用 next 函數,這看起來很像那么回事了!

那就繼續進去看看 getFilenameFromUrl 的代碼:

逐行分析下來,注意看紅框框出來這一句:

  1. if(xxx && url.indexOf(publicPath) !== 0){ 
  2.   return false

講道理,從字面意義上這個 url 應該是客戶端發過來的請求連接,publicPath 應該就是我們在 webpack.config.js 中配置的 output.publicPath 項的值了吧?運行起來看看:

果然,斷點進去之后可以看到這兩個值確確實實符合前面的猜想,問題就出在這里,此時:

  • url = '/`'
  • publicPath = output.publicPath = '/helloworld'
  • 所以 url.indexOf(publicPath) === false 實錘

getFilenameFromUrl 函數執行結果為 false,所以 webpack-dev-middleware 會直接調用 next 方法進入下一個中間件。

如果手動在默認打開的路徑后加上 output.publicPath 的內容:

果然,它又行了。

第五步:總結

嗐,你看,這就是源碼分析的過程,繁瑣但不復雜,簡直人人都能成為技術大牛啊。回顧一下代碼的流程:

  • webpack-dev-server 啟動后會調用自動打開瀏覽器訪問默認路徑 http://localhost:9000
  • 此時 webpack-dev-server 接收到默認路徑請求,沿著 express 邏輯逐步走到 webpack-dev-middleware 中間件中
  • webpack-dev-middleware 中間件內部呢,又繼續調用 webpack-dev-middleware/lib/util.js 文件的 getFilenameFromUrl 方法
  • getFilenameFromUrl 內部判斷 url.indexOf(publicPath)
  • 若 getFilenameFromUrl 返回 false 則 webpack-dev-middleware 直接調用 next ,流程進入下一個中間件 express.static
  • express.static 嘗試讀取 http://localhost:9000 對應的資源文件,發現文件不存在,流程繼續進入最后一個中間件 serveIndex
  • serveIndex 返回產物目錄結構界面,不符合開發者預期

歸根結底,這里面的問題:

  1. Webpack 官網關于 output.publicPath 的介紹只說了會影響 bundle 產物路徑,沒說會影響主頁面的索引路徑,開發者表示很 confuse 咯
  2. webpack-dev-server 啟動后,自動打開頁面時沒有在鏈接后面自動追加 output.publicPath 值導致默認打開的路徑與真正的 index 首頁不一致,而且還沒返回 「404」 一類通用的錯誤提示,取而代之以一個不明所以的「文件列表頁」,開發者很難迅速 get 到問題到底出在哪

到這里就把問題從表象,到原理,到最最根本的問題所在都挖出來了,以后可以跟其他同學說:

開發階段,盡量避免配置 output.publicPath 項,否則會有驚喜哦~~

 

責任編輯:武曉燕 來源: Tecvan
相關推薦

2021-07-02 07:06:20

調試代碼crash

2022-10-27 06:48:23

sourcemap源碼Element

2025-06-24 05:00:00

2023-03-21 17:06:24

樹莓派路由器

2015-08-10 14:56:31

Google

2016-05-18 10:04:17

技術面試

2021-01-15 05:19:08

wireshark軟件網絡

2020-06-23 09:48:09

Python開發內存

2016-11-21 15:08:38

Leader工程師團隊管理

2015-01-28 13:10:55

2010-03-02 10:13:56

程序員面試

2009-08-27 10:20:14

思科認證CCNA準備

2018-05-23 09:11:42

微信Android開發面試

2022-03-07 10:41:09

云計算容器Kubernetes

2020-10-14 10:29:58

人工智能

2009-03-05 09:34:22

畢業生面試招聘

2016-12-02 09:30:03

思科網絡

2017-05-02 13:38:51

CSS繪制形狀

2018-04-16 16:31:56

前端開發從零開始

2021-04-25 08:43:30

管理前端后端
點贊
收藏

51CTO技術棧公眾號

97超碰在线资源| 日韩精品无码一区二区三区免费| 不卡视频免费在线观看| 一区福利视频| 亚洲天堂色网站| 毛片毛片毛片毛片毛| 欧美电影网站| 亚洲精品国产第一综合99久久| 国产在线一区二区三区四区 | 日本大臀精品| 国精产品一区一区三区mba视频| 久久久视频在线| 人成免费在线视频| 日韩在线影视| 日韩午夜av一区| 88av.com| 91九色美女在线视频| 中文字幕av一区 二区| 国产精品久久久久久久免费大片| 成人黄色三级视频| 一本色道久久综合| 欧美激情一区二区三级高清视频 | 欧美极品在线观看| 日韩免费一区二区三区在线播放| 欧美伦理视频在线观看| 欧美videossex| 国产免费成人在线视频| 国产乱码精品一区二区三区卡| 在线观看中文字幕2021| 羞羞答答国产精品www一本 | 成人做爰视频www网站小优视频| 亚洲精品国产高清久久伦理二区| 亚洲国产精品日韩| 欧美精品少妇| 久久综合av免费| 精品欧美国产| 国产成人手机在线| 丰满亚洲少妇av| 91精品综合视频| 97在线播放免费观看| 日本免费新一区视频| 人人澡人人澡人人看欧美| 日韩精品一区二区在线播放 | 哪个网站能看毛片| www欧美xxxx| 亚洲午夜精品在线| 人妻夜夜添夜夜无码av| 国产又色又爽又黄刺激在线视频| 一区二区三区日韩欧美精品| 桥本有菜av在线| 精品美女在线观看视频在线观看| 国产精品久久三区| 亚洲欧美日韩在线综合| 美女黄视频在线观看| 国产亚洲美州欧州综合国| 日本不卡一区二区三区在线观看| 欧美捆绑视频| 欧美国产激情一区二区三区蜜月| 日本黄网免费一区二区精品| 成人午夜影视| 国产精品美女久久福利网站| 亚洲精品视频一二三| 快射视频在线观看| 亚洲一区二区在线视频| 内射国产内射夫妻免费频道| 三级在线观看视频| 欧洲在线/亚洲| 精品亚洲视频在线| 国产精品99久久免费观看| 国产偷国产偷亚洲清高网站| av男人的天堂av| 欧洲grand老妇人| 久久综合伊人77777蜜臀| 欧美人妻精品一区二区三区| 最新亚洲一区| 国产精品久久久久影院日本| 一区二区三区黄色片| 国产精品亚洲午夜一区二区三区 | 国产精品视频1区| 91免费视频播放| 国产成人精品亚洲777人妖| 国产精品一区二区三区在线| 每日更新在线观看av| 中文一区一区三区高中清不卡| 在线观看日本一区| a国产在线视频| 欧美色网站导航| 91亚洲一线产区二线产区| 久久av影视| 欧美老少配视频| 中文字幕黄色片| 国产美女一区二区| 欧美极品日韩| 午夜小视频福利在线观看| 欧美午夜精品久久久久久浪潮 | 中文字幕一区电影| 久久精品www人人爽人人| 免费看的黄色欧美网站| 91免费版网站入口| 国产乱理伦片a级在线观看| 亚洲精品乱码久久久久久久久| 毛片一区二区三区四区| 精品国产三级| 国产一区二区av| 免费毛片一区二区三区| 蜜桃精品视频在线| 久久66热这里只有精品| 国产一二区在线观看| 色哟哟一区二区三区| 久久人人爽人人片| 日韩av在线播放网址| 2019国产精品自在线拍国产不卡| 91激情在线观看| 久久综合国产精品| 青青草国产精品视频| 伊人国产精品| 一级做a爰片久久毛片美女图片| 国产主播在线播放| 国产一区二区在线观看免费 | 高清毛片在线看| 精品动漫一区二区三区| 国产在线观看中文字幕| 欧美在线色图| 国产成人综合亚洲| 日本啊v在线| 婷婷成人综合网| 免费啪视频在线观看| 国产高清一区| 国产女精品视频网站免费| 内衣办公室在线| 精品av在线播放| 影音先锋黄色资源| 亚洲国产国产亚洲一二三| 97视频中文字幕| 精品自拍一区| 欧美一区二区三区公司| 国产wwwwxxxx| 国产自产高清不卡| 一本一道久久久a久久久精品91| 日韩视频网站在线观看| 亚洲色图18p| www.com亚洲| 国产亚洲一区二区三区在线观看 | 国产在线精品一区二区三区不卡| 亚洲精品永久www嫩草| 成人h在线观看| 在线观看国产成人av片| 中文天堂在线视频| 国产精品视频观看| 中文字幕一区久久| 综合一区在线| 国产chinese精品一区二区| 欧美bbbxxxxx| 亚洲国产成人精品久久久国产成人一区 | 成人高潮视频| 97视频在线观看免费| 日本中文字幕一区二区有码在线 | 国产喷水福利在线视频| 一区二区三区日韩在线观看| 国产69视频在线观看| 99视频+国产日韩欧美| 久久久久久高清| 日韩精品一区二区三区av| 日韩一区二区三区在线播放| 91久久久久国产一区二区| 亚洲精品美国一| 久久人妻少妇嫩草av无码专区| 久久久久久夜| 一本久久a久久精品vr综合| 91精品视频一区二区| 欧美另类精品xxxx孕妇| 天堂在线观看av| 在线观看视频一区二区欧美日韩| 亚洲少妇xxx| 国产成人午夜视频| 那种视频在线观看| 亚洲a在线视频| 久久婷婷开心| 精品三级在线| 久久久免费精品视频| 可以在线观看的黄色| 91精品欧美一区二区三区综合在| 久久久无码一区二区三区| 久久精品无码一区二区三区| 亚洲综合伊人久久| 免费视频久久| 中文字幕第50页| 日韩三级视频| 成人亚洲激情网| 中文在线免费二区三区| 久久不射电影网| 青青草免费观看免费视频在线| 欧美精品vⅰdeose4hd| 天堂网av手机版| 亚洲欧美二区三区| 真实乱视频国产免费观看| 国产成人丝袜美腿| 国产三级三级看三级| 亚洲精品三级| 992tv快乐视频| 欧美精品一区二区三区中文字幕 | 欧美亚洲国产一区| 国产一区免费观看| 豆花视频一区| 国产精品久久久久久久天堂| 国产后进白嫩翘臀在线观看视频| 一区二区三区国产在线观看| 欧美特黄一级视频| 91麻豆精品国产综合久久久久久 | 欧美大片一区二区三区| 日韩乱码一区二区三区| 亚州成人在线电影| 日韩福利小视频| 国产精品污污网站在线观看| 国产三级国产精品| 成人av网站免费观看| 人妻巨大乳一二三区| 麻豆精品精品国产自在97香蕉 | 国产精品66部| 亚欧美在线观看| 蜜臀av一区二区三区| 无码人妻丰满熟妇区五十路百度| 亚洲激情午夜| 免费特级黄色片| 欧美一区视频| 妞干网这里只有精品| 91一区在线| 亚洲欧洲另类精品久久综合| 国产成人手机高清在线观看网站| 激情伦成人综合小说| 国产伦精品一区二区三区免费优势| 亚洲精品日产aⅴ| 亚洲精品无播放器在线播放| 国产精品视频中文字幕91| 色香欲www7777综合网| 欧美在线一级va免费观看| 性xxxxfreexxxxx欧美丶| 国内精品中文字幕| 天堂在线中文网官网| 欧美一级大片在线免费观看| 三级中文字幕在线观看| 91精品国产免费久久久久久 | 亚洲精品理论片| av高清不卡在线| avtt香蕉久久| 久久久久久久久岛国免费| 成人免费毛片糖心| 国产欧美综合色| 性生交大片免费全黄| 亚洲人成在线观看一区二区| 国产十六处破外女视频| 亚洲一区二区在线免费看| 久久精品免费av| 天天综合网 天天综合色| 久久国产视频精品| 日本韩国精品在线| 一级黄色a毛片| 欧美一级一级性生活免费录像| www.激情五月.com| 亚洲丁香婷深爱综合| 深夜福利在线观看直播| 亚洲午夜色婷婷在线| 伊人免费在线| 欧美大片免费观看| 一区二区三区四区日本视频| 国产精品精品视频| 国产美女亚洲精品7777| 精品国产aⅴ麻豆| 精品国产一区二区三区久久久蜜臀 | 色135综合网| 高清无码一区二区在线观看吞精| 伊人精品成人久久综合软件| 免费黄色日本网站| 蜜臀av一区二区三区| 一级黄色大片免费看| 91视频精品在这里| 国产黄a三级三级| 偷偷要91色婷婷| 国产成人精品亚洲| 欧美成人女星排名| 国产在线视频福利| 久久99精品久久久久久琪琪| 在线观看福利电影| 91九色蝌蚪国产| 任你弄精品视频免费观看| 亚洲成人网上| 在线高清一区| 亚洲 国产 图片| 97精品久久久久中文字幕| 青青青视频在线播放| 亚洲国产精品久久一线不卡| 精品久久久久久久久久久久久久久久久久| 在线播放中文字幕一区| 四虎影视在线观看2413| 久久久www成人免费精品张筱雨| 国产理论在线| 亚洲一区二区中文| 国产探花在线精品| 69sex久久精品国产麻豆| 美女看a上一区| 欧美高清性xxxx| 一区二区三区精品在线| 中文字幕男人天堂| 日韩成人激情视频| 性欧美videos高清hd4k| 国产精品免费视频xxxx| 欧美在线导航| 黄色三级中文字幕| 狠狠色丁香九九婷婷综合五月| 添女人荫蒂视频| 亚洲一二三级电影| 国产农村妇女毛片精品久久| 在线播放精品一区二区三区| 深夜福利视频一区二区| yy111111少妇影院日韩夜片| 欧美独立站高清久久| 91av俱乐部| 91在线码无精品| 久久精品国产亚洲av香蕉| 91精品国产黑色紧身裤美女| 香蕉视频国产在线观看| 国产91色在线播放| 天堂成人娱乐在线视频免费播放网站 | 欧美日本一区二区在线观看| 经典三级在线| 57pao国产精品一区| 久久综合五月婷婷| 成人免费在线网| 国产成人免费xxxxxxxx| 欧美又粗又大又长| 日韩一区二区三区视频在线| 免费av毛片在线看| 国产一区二区视频在线观看| 欧美日韩精品一区二区视频| 999精品视频在线| 久久久久99精品国产片| 欧美一区二区三区网站| 日韩精品小视频| 韩国美女久久| 日韩精品最新在线观看| 视频在线观看一区二区三区| 欧美特黄一区二区三区| 91福利精品视频| 97电影在线观看| 成人欧美一区二区三区在线湿哒哒| 青青草国产免费一区二区下载| 亚洲人辣妹窥探嘘嘘| 国产精品美女久久久久久2018| 中文字幕日本人妻久久久免费| 一区二区三区日韩在线| 欧美高清影院| 日本一道在线观看| 国产91高潮流白浆在线麻豆| 国产精品1234区| 亚洲欧美国产高清va在线播| 成人性生交大片免费网站| 亚洲成人第一| 国产精品自拍毛片| 国产精品6666| 亚洲欧洲美洲在线综合| 黄色成人在线观看网站| 少妇高潮大叫好爽喷水| 成人午夜电影久久影院| 亚洲天堂一区在线| 中文字幕免费精品一区高清| 亚洲欧美一级| 国产一区二区网| 欧美国产日韩亚洲一区| 91精品国产乱码久久久久| 欧美大尺度激情区在线播放| 精品国产导航| 男人添女人下面免费视频| 亚洲欧美另类小说| 偷拍自拍在线| 国产乱肥老妇国产一区二 | 国产日产一区| 网站在线你懂的| 福利视频一区二区| 日本最新在线视频| 国产精品久久久久久久久久久久冷| 奶水喷射视频一区| 中国1级黄色片| 精品国产sm最大网站| 91国拍精品国产粉嫩亚洲一区| 一区二区三区四区免费观看| 97久久精品人人澡人人爽| 亚洲一区 中文字幕| 韩国福利视频一区| 99久久亚洲精品| 亚洲专区区免费| 日韩亚洲欧美中文三级| 欧美成人精品三级网站| 国内少妇毛片视频| 国产精品视频在线看| 日本免费不卡视频| 亚洲永久在线观看| 日韩av中文在线观看| 日韩av电影网址| 精品国产一区二区三区久久狼5月 精品国产一区二区三区久久久狼 精品国产一区二区三区久久久 | 中文字幕不卡在线观看|