久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

插件加載失敗排查指南:從did not activate到根治

插件加載失敗排查指南:從did not activate到根治 先說實話過去一周我至少收到了三條跟plugins相關(guān)的求助消息報錯長得幾乎一模一樣——Failed to load plugins web boot: 2 entries did not activate后面還跟著一串奇怪的包名比如linxin666/dsh-p、huayu-yuan。問的人多了我突然意識到這不是個例而是所有跟插件體系打交道的開發(fā)者遲早要撞上的那堵墻。這個標(biāo)題下的熱搜詞也很有意思有人問iar plugins 是干什么的有人在搜musicfree plugins還有一堆人卡在harness failed to load plugins上。表面看是不同工具、不同生態(tài)但翻來覆去其實是同一件事——插件機制本身的工作原理和排查思路。這篇文章不打算做成plugins的詞條百科我也沒有那個能力把全世界所有插件框架講一遍。我只想以加載失敗為切口把插件的加載、激活、依賴分析、故障定位這些底層邏輯徹底講透。不管你用的是 Harness、MusicFree、IAR 還是自己寫的插件系統(tǒng)這套排查方法論都通用??赐曛竽阍儆龅絛id not activate大概率不需要去搜索引擎里碰運氣了。1. 先拆開那句最讓新手崩潰的報錯2 entries did not activate很多人第一次看到Failed to load plugins web boot: 2 entries did not activate的時候第一反應(yīng)是插件壞了第二反應(yīng)是刪了重裝。這兩個反應(yīng)都不算錯但沒有一個觸及真正的問題。我見過的項目里這句報錯背后藏著至少七八種完全不同的原因而且大部分跟插件本身的代碼好壞沒有直接關(guān)系。要讀懂這句話得先接受一個插件系統(tǒng)領(lǐng)域里很多人下意識忽略的事實加載插件和激活插件是兩件不同的事。一個現(xiàn)代的插件系統(tǒng)比如 Harness 的 web boot 加載器在啟動時做的事情遠(yuǎn)不止把插件的 JS 拉過來跑一遍。它內(nèi)部是分階段的發(fā)現(xiàn)階段掃描所有聲明過的插件入口entry把它們從模塊系統(tǒng)里加載進(jìn)來拿到插件的元信息。校驗階段檢查這個插件是否滿足宿主聲明的依賴、版本、平臺要求。激活階段真正執(zhí)行插件的激活函數(shù)讓插件向宿主注冊能力、擴展點或服務(wù)。報錯里說的2 entries did not activate意思是加載器已經(jīng)發(fā)現(xiàn)了兩個入口但它們在激活階段沒有成功。這里就有一個很多人容易誤解的細(xì)節(jié)did not activate并不等于插件代碼報錯了。它只是一個結(jié)果描述。插件可能因為本身的代碼拋異常而沒激活可能是因為異步初始化沒等完就被宿主判定超時也可能是因為它依賴的另一個插件沒起來它的激活函數(shù)選擇了靜默退出。甚至還有更離譜的情況——插件聲明了activate函數(shù)但函數(shù)簽名跟宿主期望的不匹配宿主根本就沒調(diào)用它。我的建議是遇到這句報錯先別急著懷疑插件作者也別急著懷疑自己配錯了。第一步應(yīng)該是去看日志里是否還有其他更早的報錯信息。很多框架在拋出did not activate之前會先寫一條詳細(xì)得多的錯誤日志包含具體是哪個入口、拋出的是什么異常、哪個依賴缺失。只盯著最終報錯看等于只看到了事故現(xiàn)場沒看到事故原因。從搜索引擎的熱搜詞來看linxin666/dsh-p和huayu-yuan這兩個包名反復(fù)出現(xiàn)在報錯信息里。這其實是另一個重要信號報錯里的包名越具體越說明加載器工作正常問題越集中在插件自身的元信息或依賴關(guān)系上。你順著包名去查它的package.json、它的plugin.json、它的依賴樹往往能很快找到答案。2. 為什么插件系統(tǒng)偏愛兩段式激活而不是一個init干到底弄清楚了did not activate的字面意思下一個自然的問題就是為什么要把加載和激活分開為什么不干脆像普通模塊那樣import之后就執(zhí)行、執(zhí)行完就算完成這個問題如果沒想透排查問題的思路很容易走偏。我見過不止一個開發(fā)者一看到插件加載失敗就猛改插件代碼加各種try...catch試圖讓插件跑起來。但很多時候問題根本不是插件跑不跑得起來而是宿主跟插件之間的接口協(xié)議沒對齊。插件系統(tǒng)的兩段式設(shè)計本質(zhì)上是在模仿操作系統(tǒng)加載應(yīng)用程序的過程。你想想Linux 啟動一個可執(zhí)行文件時先是由內(nèi)核把文件映射到內(nèi)存分配地址空間然后才跳轉(zhuǎn)到入口函數(shù)執(zhí)行。映射失敗是加載階段的錯誤入口函數(shù)崩了是運行階段的錯誤。插件系統(tǒng)把這兩個階段分開能換來幾個實實在在的好處第一個好處是可控性。宿主可以對已經(jīng)加載但沒有激活的插件做預(yù)檢。插件的元信息、依賴列表、權(quán)限聲明都可以在激活之前被審查和校驗。發(fā)現(xiàn)插件需要的宿主 API 版本不滿足直接在激活之前攔截掉不讓它執(zhí)行任何代碼。如果只有一個init函數(shù)那你只能在插件代碼執(zhí)行到一半的時候發(fā)現(xiàn)問題那時候可能已經(jīng)造成了部分副作用。第二個好處是并行和容錯。在 Harness 這類系統(tǒng)里多個插件的加載順序往往是經(jīng)過拓?fù)渑判虻?。宿主提前知道了所有插件的依賴關(guān)系圖就可以讓互不依賴的插件并行加載讓被依賴的插件先激活。如果某個插件激活失敗宿主可以決定是終止整個啟動流程還是跳過它繼續(xù)用其他插件。兩段式設(shè)計給這個決策留出了明確的判斷節(jié)點。第三個好處是重試和延遲激活。我舉個最常見的場景配置管理系統(tǒng)里插件 A 依賴配置服務(wù)的某個數(shù)據(jù)但配置服務(wù)本身也是另一個插件 B 提供的。宿主先加載 A 和 B然后讓 B 先激活等 B 激活完成后再去激活 A。如果 A 發(fā)現(xiàn)數(shù)據(jù)還沒準(zhǔn)備好它可以告訴宿主我沒激活但我愿意等。這種能力在init一體化設(shè)計里很難優(yōu)雅實現(xiàn)。理解了這一點再看did not activate你就會明白這句話既不是說插件文件下載失敗也不是說插件被禁用了而是說宿主給了你激活的機會但你沒有完成激活流程。排查的重心應(yīng)該放在激活條件是否滿足、激活函數(shù)是否拋出異常、激活結(jié)果是否被宿主正確接收這三個地方。順帶說一個我自己的實際經(jīng)驗不少插件框架的激活函數(shù)支持返回值宿主會根據(jù)返回的 Promise 是否 resolve 來判斷激活是否成功。有的插件作者在激活函數(shù)里做了異步操作比如拉取遠(yuǎn)程配置結(jié)果忘了把這個異步操作放在返回的 Promise 鏈上導(dǎo)致激活函數(shù)已經(jīng)返回了但真正的初始化還沒完成。宿主一看函數(shù)返回了就認(rèn)為激活成功但功能實際上是殘缺的反過來如果拉取遠(yuǎn)程配置失敗異步操作在 Promise 之外拋了異常宿主捕獲不到就會一直處于未激活的懸掛狀態(tài)。這種 bug 非常隱蔽日志里未必有直接痕跡需要你仔細(xì)讀代碼才能發(fā)現(xiàn)。3. 一條完整的排查鏈路從failed to load plugins到真相大白光說理論還是太虛我用自己處理過的一個真實案例來走一遍完整排查流程。項目背景是一個內(nèi)部工具用了類 Harness 的插件加載器啟動時必現(xiàn)報錯Failed to load plugins web boot: 2 entries did not activate這兩個入口一個叫l(wèi)inxin666/dsh-p一個內(nèi)部封裝的儀表盤插件一個叫huayu-yuan一個數(shù)據(jù)源插件。這個場景跟熱搜詞里的情況幾乎一模一樣所以我拿它當(dāng)主案例講。3.1 第一步確認(rèn)報錯的實際觸發(fā)點我最初的做法很簡單直接在瀏覽器 DevTools 里打開 Network 面板看啟動時到底請求了哪些文件。結(jié)果發(fā)現(xiàn)兩個插件對應(yīng)的 JS 文件都被正常下載了HTTP 狀態(tài)碼全是 200文件內(nèi)容也能正常解析。這說明問題確實不在文件加載層面符合報錯信息里的did not activate而不是failed to load plugin file。這一步的核心價值是縮小范圍。我可以直接排除路徑配錯文件不存在CORS 攔截網(wǎng)絡(luò)超時這一類問題把注意力全部集中到激活階段。3.2 第二步復(fù)現(xiàn)并抓取更底層的錯誤光看 Network 不夠我打開了 Console把日志級別調(diào)到 verbose重新刷新頁面。這次看到了幾條之前被忽略的警告[plugin-loader] Entry huayu-yuan skipped: dependency dsh-p not active [plugin-loader] Entry linxin666/dsh-p activation failed: TypeError: Cannot read properties of undefined (reading registerPanel)這兩條日志一出來謎底基本就揭了一半。huayu-yuan之所以沒激活不是因為自己有問題而是因為它依賴的dsh-p沒激活成功。所以真正的病根在dsh-p那行TypeError上。這里就體現(xiàn)出兩段式激活和依賴注入的價值了加載器明確地把依賴未激活作為拒絕激活的原因而不是讓插件自己蒙著初始化然后詭異報錯。如果你用的是一個日志不友好的框架可能只能看到一堆undefined is not a function連是誰調(diào)誰都不知道。3.3 第三步分析插件代碼與宿主 API 的匹配關(guān)系拿到Cannot read properties of undefined (reading registerPanel)這條線索后接下來就是讀代碼。我去翻了dsh-p的源碼找到一個關(guān)鍵片段// 偽代碼示意 export function activate(host) { host.panels.registerPanel({ id: dsh, component: DashboardComponent, }); }這段代碼假設(shè)宿主傳進(jìn)來的host對象上有panels.registerPanel方法但運行時host.panels是undefined所以直接拋了 TypeError。這意味著什么意味著插件是在面向一個較新的宿主 API 版本開發(fā)的但實際運行它的宿主還是一個老版本老版本里面板注冊的 API 路徑是host.registerPanel沒有panels這個命名空間。這種問題特別典型的出現(xiàn)場景是插件作者升級了宿主 SDK但部署環(huán)境里宿主核心沒升級或者反過來宿主升級了老插件還在用舊 API。我后來查了項目的依賴鎖文件確認(rèn)dsh-p這個包是在宿主升級核心之后才發(fā)布的而宿主核心并沒有包含它預(yù)期的panels命名空間。3.4 第四步定位依賴關(guān)系中的順序問題順便解釋一下huayu-yuan的情況。它在插件目錄里聲明了對dsh-p的依賴。加載器做了拓?fù)渑判蚶碚撋蠒燃せ頳sh-p再激活huayu-yuan。但dsh-p激活時拋了異常宿主標(biāo)記它為failed然后輪到huayu-yuan時加載器檢測到它的依賴不可用直接跳過了它的激活連它的代碼都沒執(zhí)行。這種依賴未滿足就靜默跳過的設(shè)計對一個健康的插件生態(tài)其實是友好的。它避免了插件在一個殘缺的環(huán)境里運行產(chǎn)生更難查的狀態(tài)污染。但你作為排查者必須理解這條鏈路表面上兩個插件都沒激活但真正的問題只出在第一個插件上第二個是被連帶影響的。在踩坑過程中我還發(fā)現(xiàn)一個容易誤導(dǎo)人的細(xì)節(jié)如果加載器沒有明確告訴你依賴未激活你可能會看到huayu-yuan那邊有一條Promise timeout或activation aborted之類的模糊錯誤很容易把方向引向這個插件自己卡死了。所以排查時一定要把日志里所有跟插件加載相關(guān)的條目全部拉出來看不要只看跟你懷疑對象相關(guān)的部分。3.5 第五步修復(fù)與驗證定位到根因之后修復(fù)方案反而很簡單了。我當(dāng)時做了兩件事先把dsh-p插件升級到與當(dāng)前宿主 API 兼容的版本然后給huayu-yuan聲明依賴時加上版本范圍約束避免它再匹配到不兼容的版本。重啟應(yīng)用兩個插件都正常激活報錯消失。這個案例帶給我的方法論沉淀是插件激活失敗的問題90% 的根因不在網(wǎng)絡(luò)、不在文件缺失而在 API 兼容性、依賴順序和異步初始化三者之中。后面我會針對這三類根源分別給排查技巧。4. 真實生態(tài)觀察IAR、MusicFree、Harness 這些熱門里的插件門道熱搜詞里特別提到了三個具體的生態(tài)iar plugins嵌入式 IDE 的插件體系、musicfree plugins開源音樂播放器的音源擴展、harness failed to load plugins web boot持續(xù)交付平臺的插件加載。把它們放在一起看特別能說明插件機制的普適性和差異性。4.1 IAR 插件嵌入式 IDE 里的能力補充協(xié)議iar plugins 是干什么的這個問題很多人搜是因為初次接觸嵌入式 IDE 時看到插件管理界面一頭霧水。IAR Embedded Workbench 的插件體系核心作用是擴展編譯、調(diào)試、靜態(tài)分析之外的能力。比如你可以通過插件集成自己的代碼格式化工具、自定義構(gòu)建步驟、或者對接內(nèi)部的日志分析平臺。插件的本質(zhì)是宿主定義了一組能力協(xié)議第三方代碼通過這些協(xié)議接入。在 IAR 里這個協(xié)議通常表現(xiàn)為 IDE 提供的一組 COM 接口或自動化 API。你寫的插件只要實現(xiàn)了對應(yīng)接口就能被 IDE 識別并在菜單欄、工具欄、事件回調(diào)里出現(xiàn)入口。這里有一個通用經(jīng)驗越是老牌的工業(yè)軟件插件協(xié)議越保守。IAR 的插件接口版本演進(jìn)速度很慢你今天按舊文檔寫的插件放在十年后的新版本 IDE 上大概率還能跑。但這種保守也意味著新特性只能靠 IDE 廠商自己加插件作者很難突破宿主能力邊界。如果你動了用插件改 IDE 內(nèi)部行為的念頭我勸你先確認(rèn)插件協(xié)議是否有暴露對應(yīng)的鉤子沒暴露就別折騰繞過去幾乎不可能穩(wěn)定。4.2 MusicFree 插件小而美的插件化思路MusicFree 是一個開源的音樂播放器它的插件機制很有代表性——插件本質(zhì)上就是一個 JS 文件導(dǎo)出一組provider接口。用戶要增加一個新音源只需要下載一個 JS 文件放進(jìn)插件目錄應(yīng)用就能在列表里多一個源選項。這個設(shè)計最大的優(yōu)點是把插件的開發(fā)門檻拉到極低不需要編譯、不需要簽名、不需要復(fù)雜的依賴聲明。但低門檻的代價就是健壯性全靠作者自律。我在 MusicFree 社區(qū)里見過不少翻車案例插件作者沒有處理異常的網(wǎng)絡(luò)請求、沒有做好超時控制導(dǎo)致應(yīng)用在解析某個音源時卡死。還有插件在provider接口里偷偷聲明了一個全局變量跟其他插件的全局變量沖突兩個插件同時啟用時行為詭異。如果你是想給 MusicFree 這類應(yīng)用寫插件我的建議是嚴(yán)格把插件當(dāng)成一個被隔離的播放適配層來寫。對外只導(dǎo)出宿主要求的接口對內(nèi)不要碰任何全局狀態(tài)所有網(wǎng)絡(luò)請求都要設(shè)置超時和錯誤兜底。插件的激活和調(diào)用是高頻操作任何一次卡頓都會直接影響用戶體驗宿主可沒有任何節(jié)流保護(hù)。4.3 Harness企業(yè)級插件加載的復(fù)雜性和穩(wěn)定性平衡Harness 的web boot插件加載器是我個人覺得最值得研究的一種設(shè)計。它面向的是持續(xù)交付平臺這種高復(fù)雜度場景插件的來源可能是三方供應(yīng)商、內(nèi)部團(tuán)隊、甚至是同一個項目里的不同模塊。這樣的場景里插件之間的依賴往往非常復(fù)雜一個插件可能需要另一個插件暴露的運行時數(shù)據(jù)而不是簡單的你先跑我再跑。企業(yè)級插件系統(tǒng)的加載失敗根因幾乎必然落在依賴版本漂移上。我在實際項目中見過最典型的 case插件 A 依賴某公共庫的 v2 版本插件 B 也聲明依賴同一個公共庫但鎖定了 v3宿主啟動時做了依賴加載結(jié)果先把 v2 加載了B 激活時發(fā)現(xiàn) API 對不上直接拋異常。這種問題在單體應(yīng)用里根本不可能出現(xiàn)但在插件插件化的世界里因為你無法完全隔離每個插件的依賴版本沖突就成了需要持續(xù)管理的常態(tài)。解決版本漂移的方案五花八門有讓每個插件捆綁依賴做隔離的有在宿主層面做依賴協(xié)調(diào)的還有干脆規(guī)定所有公共依賴由宿主統(tǒng)一提供、插件只能使用宿主聲明的版本。這里不展開講但你應(yīng)該記住插件體系越復(fù)雜宿主對依賴的管理策略就越重要。排查問題的時候先搞清楚宿主用什么策略管理跨插件的共享依賴能幫你省掉一半的瞎猜。4.4 三個生態(tài)的橫向?qū)φ帐裁醋兞繘Q定了插件的難易度把這三個生態(tài)放在同一張表里看很多規(guī)律就清楚了維度IAR 插件MusicFree 插件Harness 插件插件載體原生代碼/DLL/COM 組件JS 文件JS bundle / npm 包激活方式IDE 啟動時掃描注冊應(yīng)用掃描目錄后調(diào)用 provider按拓?fù)漤樞驁?zhí)行 activate依賴管理宿主提供接口無顯式依賴基本無依賴顯式依賴聲明支持版本約束升級策略調(diào)接口版本文件直接覆蓋版本鎖定 發(fā)布通道常見失敗原因接口版本不匹配代碼健壯性差、全局污染依賴版本漂移、API 不兼容這張表看起來信息很多但核心就一句話插件生態(tài)的復(fù)雜度主要取決于宿主對依賴的管理強度。你在排查任何插件問題時都要先判斷自己處在哪種生態(tài)層級里再用對應(yīng)的方法論。5. 排查插件激活失敗的三板斧日志、代碼、隔離驗證聊了理論、講了案例、看了生態(tài)接下來這部分是我最想讓你帶走的實戰(zhàn)方法論。不管你在什么系統(tǒng)里遇到did not activate或者failed to load plugins折騰的時候都別離開這條主線日志找直接原因、代碼找底層原因、隔離驗證排除外部干擾。5.1 第一板斧讓日志開口說話很多時候你覺得日志沒用其實是因為你不知道該看哪類日志。插件加載器通常會分幾個日志域loader記錄插件的發(fā)現(xiàn)、讀取、校驗流程activation記錄每個入口的激活開始和結(jié)束以及失敗時的異常堆棧dependency記錄依賴關(guān)系解析和拓?fù)渑判虻倪^程以 Harness 的web boot為例如果你在啟動時看到2 entries did not activate我建議你先去激活日志域里抓取類似這樣的信息activation: activating linxin666/dsh-p activation: error in linxin666/dsh-p: TypeError: Cannot read properties of undefined activation: linxin666/dsh-p activation failed, propagation: skip activation: huayu-yuan blocked by dependency: linxin666/dsh-p大多數(shù)情況下這類日志已經(jīng)把根因?qū)懺谀樕狭?。最怕的情況是日志被設(shè)置成只輸出 error 級別把 warning 和 info 級別的關(guān)鍵線索過濾掉了。所以排查插件問題之前先把日志級別調(diào)到 debug 或 trace多出來的信息量往往能直接省掉你半小時的代碼閱讀。5.2 第二板斧順著代碼路徑讀而不是泛泛看拿到了異常堆棧之后不要滿足于哦是這里報錯了要繼續(xù)問三個問題這個變量為什么是 undefined是宿主 API 版本沒有這個方法還是插件在錯誤的時間讀取了錯誤的上下文這個函數(shù)為什么沒有被調(diào)用是宿主沒有找到它還是插件導(dǎo)出的對象結(jié)構(gòu)跟接口定義不一致這個 Promise 為什么沒有 resolve是異步邏輯掛起了還是回調(diào)根本沒有被觸發(fā)我在排查中反復(fù)驗證過一件事插件激活失敗的 80% 的根因藏在接口簽名和 API 版本的匹配里只有 20% 才是真正的邏輯 bug。所以寧可先花時間比對插件聲明的接口版本和宿主導(dǎo)出的實際 API也別急著深挖邏輯實現(xiàn)。具體操作上我會把插件入口文件的開頭部分完整讀一遍特別關(guān)注導(dǎo)出的對象形狀。比如宿主要求導(dǎo)出{ name, version, activate, deactivate }插件卻只導(dǎo)出了{(lán) name, activate }那deactivate缺失通常不會導(dǎo)致激活失敗但如果宿主在激活前就要讀取version字段那問題就來了。5.3 第三板斧把問題壓到最小可復(fù)現(xiàn)單元如果前兩步做完還沒定位到根因那就要考慮是不是外部環(huán)境干擾太多。我的建議是做一個最小化驗證只保留一個插件在配置里其他全部禁用看是否還能復(fù)現(xiàn)報錯。如果單插件能激活再把第二個插件加回來觀察是不是依賴順序?qū)е碌?。如果單插件也激活不了直接寫一個跳過插件的宿主入口手動調(diào)用該插件的activate函數(shù)傳入一個 mock 的宿主對象在 Node 環(huán)境里跑一遍。這個流程在邏輯上等價于功能開關(guān) 二分定位的思路。而且它有一個額外的好處當(dāng)你在獨立環(huán)境里手動調(diào)用插件激活函數(shù)時所有異常都會直接暴露在控制臺里不會再被加載器吞掉或包裝成含糊的did not activate。我自己處理過一個特別頑固的 case在宿主里怎么都激活失敗報錯信息永遠(yuǎn)只有activation failed沒有堆棧。后來我把插件的activate函數(shù)拉出來在 Node 里手動執(zhí)行發(fā)現(xiàn)是插件代碼里引用了window對象但加載器在 web worker 環(huán)境里激活插件window不存在。這個問題在宿主界面完全看不出端倪只有隔離驗證才能暴露。6. 從插件使用者視角寫一份自查清單下次遇到報錯不再慌前面幾章更像是診斷思路這一章我干脆整理成可以照著做的自查清單。遇到plugins相關(guān)的加載失敗按順序逐項檢查大概率能在 10 分鐘內(nèi)找到方向。6.1 環(huán)境與版本自查是否有更新過宿主核心版本插件是否有對應(yīng)的版本適配插件目錄里有多個版本混放嗎同一插件的多個副本會干擾加載器。插件的依賴聲明和實際安裝的依賴版本是否匹配用npm ls或等價命令查依賴樹。宿主運行平臺是瀏覽器、Node 還是移動端插件是否用了平臺專有 API如window、process6.2 配置與注冊自查插件入口的路徑是否指向了正確的文件大小寫和擴展名有沒有錯插件 ID 是否唯一有沒有跟其他插件的 ID 撞車插件的激活條件是否依賴某些配置項配置項是否存在且格式正確6.3 激活流程自查插件的activate函數(shù)是同步還是異步如果異步是否把 Promise 返回給了宿主激活函數(shù)里有沒有未捕獲的異常加一層try...catch打印日志再試一次。有沒有執(zhí)行超時的可能遠(yuǎn)程調(diào)用、文件讀取、數(shù)據(jù)庫連接都可能卡住激活流程。是否需要依賴另一個插件激活宿主是否按照依賴順序在加載6.4. 常見錯誤速查表報錯特征大概率原因優(yōu)先排查方向TypeError: Cannot read properties of undefinedAPI 版本不匹配或上下文缺失比對宿主版本與插件要求ReferenceError: xxx is not defined插件引用了不能訪問的全局變量檢查插件運行環(huán)境隔離性activation timed out異步初始化未完成或死循環(huán)檢查激活函數(shù)里的異步鏈路blocked by dependency被依賴的插件沒有激活先解決被依賴插件的激活失敗missing required field插件導(dǎo)出對象缺少必填字段檢查導(dǎo)出對象結(jié)構(gòu)version conflict共享依賴版本沖突用依賴分析工具查看沖突鏈這張表我用引號把典型詞匯括起來是因為你在日志里看到的報錯原文千差萬別但關(guān)鍵詞是高度相似的??匆奷ependency、timed out、undefined這些詞就要立刻調(diào)動對應(yīng)的預(yù)案。7. 作為插件開發(fā)者怎么設(shè)計才不容易被did not activate前面從使用者角度講完了排查最后這部分我想站在更底層一點的位置談?wù)勗趺磳懖寮挪蝗菀撞冗M(jìn)激活失敗的坑。很多插件作者寫代碼時只看功能是否實現(xiàn)完全不考慮宿主加載器的預(yù)期結(jié)果用戶一集成就報錯然后作者覺得是宿主的問題用戶覺得是插件的問題兩邊扯皮。這類問題的本質(zhì)是插件沒有遵循宿主對插件的生命周期契約。7.1 導(dǎo)出正確的對象形狀比寫好邏輯更優(yōu)先一個合格插件入口文件至少應(yīng)該導(dǎo)出以下字段id唯一標(biāo)識name展示名稱version語義化版本號activate激活函數(shù)deactivate銷毀函數(shù)可選但強烈建議有些宿主還會要求requiredHostVersion、dependencies這類元信息。寫插件的第一步就是去讀宿主的插件開發(fā)文檔把導(dǎo)出對象的結(jié)構(gòu) 100% 對照清楚而不是憑經(jīng)驗猜。我在實際項目中遇到過一件事有個插件作者在導(dǎo)出對象里多加了一個constructor字段導(dǎo)致宿主在序列化插件元信息時把整個對象當(dāng)成一個構(gòu)造函數(shù)來執(zhí)行激活過程直接崩潰。這類低級但致命的錯誤根因就是想當(dāng)然地給導(dǎo)出對象加料。7.2 激活函數(shù)要做到可重入、可失敗、可恢復(fù)可重入的意思是插件激活函數(shù)不應(yīng)該有只能調(diào)用一次的隱式狀態(tài)。宿主可能在熱重載、配置變更后再次調(diào)用你的activate如果你在激活時給全局變量賦值了卻沒有在設(shè)計上支持二次賦值那么第二次激活就會出現(xiàn)臟狀態(tài)??墒〉囊馑际羌せ詈瘮?shù)要敢于拋異常。很多人寫插件時喜歡把所有異常都吞掉用catch (e) {}把錯誤壓下去然后return一個成功狀態(tài)。這樣做表面上讓激活流程成功了但功能模塊實際處于半初始化狀態(tài)后續(xù)調(diào)用必然出詭異問題。寧可讓激活失敗、讓宿主跳過你也不要用一個虛假的成功掩蓋問題??苫謴?fù)的意思是插件要盡量在激活失敗后清理自己已經(jīng)產(chǎn)生的副作用。比如你已經(jīng)注冊了某個事件監(jiān)聽器然后后續(xù)初始化失敗了最好在返回失敗之前把監(jiān)聽器移除掉。不然下次重試激活的時候監(jiān)聽器會疊加成一個副本行為可預(yù)測性大幅下降。7.3 異步初始化必須有明確的超時和取消機制假裝沒看到這個建議的人大概率會寫出讓用戶崩潰的插件。異步初始化里最常見的坑是激活函數(shù)拉取遠(yuǎn)程配置結(jié)果遠(yuǎn)程服務(wù)掛了插件就一直掛在 pending 狀態(tài)宿主卡在啟動階段用戶看到的就是一個轉(zhuǎn)圈轉(zhuǎn)個不停的應(yīng)用。好的插件設(shè)計絕對要自己做超時控制export async function activate(host: Host): Promisevoid { const controller new AbortController(); const timer setTimeout(() controller.abort(), 5000); // 5s 超時 try { const config await fetchRemoteConfig({ signal: controller.signal }); host.registerConfig(config); } catch (error) { if (error.name AbortError) { throw new Error(activate: remote config fetch timed out after 5s); } throw error; } finally { clearTimeout(timer); } }這段代碼里我做了三件事給網(wǎng)絡(luò)請求掛了一個 5 秒的取消信號超時之后主動中斷在超時的情況下拋一個明確的錯誤讓宿主知道這個插件激活失敗的具體原因在finally里清理定時器。同樣邏輯可以推廣到數(shù)據(jù)庫連接、文件讀取、嵌套插件調(diào)用等所有異步操作。7.4 主動聲明依賴但別把依賴當(dāng)作保姆插件對宿主能力的需求最好通過元數(shù)據(jù)主動聲明出來而不是等運行時發(fā)現(xiàn)缺了什么才報錯。在 Harness 這類支持顯式依賴的體系里你應(yīng)該寫成{ id: my-plugin, dependencies: { linxin666/dsh-p: ^2.0.0, core-utils: 1.4.0 } }依賴版本號別用*或者不加約束那是給自己埋雷。但反過來依賴也別聲明得太貪婪——不是每個插件都需要一大堆基礎(chǔ)庫。盡量依賴宿主已經(jīng)暴露的通用能力減少外部依賴的數(shù)量這樣整體穩(wěn)定性會高很多。我自己寫插件時的原則是能用宿主提供的能力絕不自己引入第三方庫。宿主里的公共庫版本統(tǒng)一由宿主管理是最省心的方案。7.5 最后給你的插件做一次客戶端視角冒煙測試Emit 上線之前我強烈建議做一個最簡單的冒煙測試裝在一個干凈環(huán)境里只加載你一個插件觀察激活日志然后跟其他插件共存觀察依賴解析最后再模擬一次宿主核心升級的場景確認(rèn)你的插件兼容性不會突然斷裂。這輪冒煙測試做下來你已經(jīng)提前替用戶踩過了一遍最常見的坑。反過來從一個普通使用者的角度看如果你只是想解決今天報的錯把所有排查手段濃縮成一句話就是別被最終報錯迷惑順著日志往前翻找到真正的第一條錯誤剩下的大多數(shù)問題都是連鎖反應(yīng)。插件世界沒有魔法破壞依賴鏈的任何一個環(huán)節(jié)都會在最終的did not activate上暴露。你只要耐心把鏈條重新接上它就能恢復(fù)運轉(zhuǎn)。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
久草成人影片| 欧美组图日韩亚洲中文字幕| 亚洲性爱电影| 麻豆 欧美 日韩| 免费99精品国产自在在线| www.成人无码| 色色香蕉| 久久一二三四五六七八九区区| 嗯嗯不要 视频| 亚洲暴力强奸AV| 九九热五区| 九九免费影片| 亚洲制服aⅴ中文字幕| 亚洲成人性爱在线观看| 亚洲图片 激情小说| 午夜啪| 婷婷综合在线观看| 亚洲AV无码乱码| 开心五月婷婷激情| 操人妻丝袜高跟| 青青草自拍视频在线播放| 91久久久老司机| 免费观看性欧美一级| 国产后入式在线观看| 乱伦av麻豆| 国产乱码精品久久久久久| 欧美亚洲综合高清在线| 97自拍一区| 中国一级特黄大片护士| 亚av顶级裸体一区二区三区四区五区 | 啪啪啪东京| 亚洲人在线| 老熟妇乱轮| 青青伊人加勒比海| 七久久久| 一级做受视频免费是看美女| 六月丁操逼| 日本免费一级AAA大片器 | 狠狠操综合| 精品一区二区啪啪啪| 狠日欧美| 五月开心久久AV官网| 天天色天天干天天射| 久9九综合在线| 操逼999| 天天色综合图片| 超清福利精品视频在线| 97人人爱人人乐| A片三级无码| a一区二区三区乱码在线| 国产9熟妇视频网站| www鬼畜国产男人的天堂| 综合五月婷婷亚洲一区| 日韩电影在线观看网址| 久久神马影院| 搡老女人老熟女91| 久草在| 九九探花视频在线观看| 福利伊人玖玖国产| 亚洲第一狼人丝袜美女另类| 色呦呦呦在线观看视频| 日本黄色大片一级视频免费麻豆| 日韩成年人性爱视频| 亚洲男人的天堂网| 99自拍视频| 成人性爱视频在线看| 这里只有精品视频| 超碰人人草| 91伊人大香蕉| 蜜臀无码一区二区| 亚洲中文字幕久久无码精品| x97av| 97久久国产亚洲精品超碰热| 中文字幕一区二区三区人妻不卡 | 99热精品免费| 91肏屄网| 亚洲色图 综合| 亚洲日韩97| 搡老女人老91二区| 欧美十八禁导航成人| 大香网伊人久久综合网eew| 五月丁香婷婷综合| 亚洲激情AV| 久久中文色图| 久久精品99久久久久久| 日本亚洲嫩草影院啪啪| 96久久久久| 亚州综合色| aaa亚无码专区| jk白丝没脱就开始啪啪| 五月天激情小说| 欧美激情一区二区| 中文字幕后石码三区四区| 国产午夜激片Av毛片不卡| 顶级丝袜熟女一区二区三区| AAA久久| 91丨豆花丨熟女| 亚州熟妇精品| 超碰综合97在线| 国产精品久久久三级无码| 亚洲中文字幕av | 啊啊啊 在线| 熟女人妻一区二区三区| 欧美高清16| 偷拍 精品 另类 四区| 欧美欧美啪啪视频| 狠狠干妹子| 精品人人| 久久综合资源一区二区| 精品一区二区成人| 亚洲人人夜夜澡人人爽| 欧美图片色五月天| 日韩无码三级影院| 99re6久热只有精品6在线直播| 嗯啊不要啊啊在线观看视频| 九久9精品| 一线黄色免费性爱片| 伊色综合天堂色97| 久久久久久九九九九| 亚洲色图亚洲无码强奸乱伦| 亚洲一区二区 麻豆传媒| 91n欧美| 欧美日韩精品一区二区三区高清| 麻豆伊人网| 精品久久久av无码免费| 97人肏| julia国产在线 | AV污污污污| 激情文学欧美| 国产精品激情久久久久久久| 啊啊啊啊啊好舒服视频| 91在线视频观看国产| 亚洲精品 超碰| 电家庭影院午夜69久久夜色精品国产69乱 | 蜜臀AV秘一区翔田千里| 麻豆婷婷成人一二三| 国产成人亚洲精品无码最新在线| 久久国产精品,久久国产| 搡老女人老熟女91| 999九九精品| 操逼www.| 亚洲 欧美 日本 国内 首页| 日韩AV片| 艹少妇网站| 伊人亚洲综合| 亚洲丝袜色| 国产偷人伦激情在线观看| 日本高清电影欧美色图| 夜夜操美女| 日本999精品| 亚洲成人免费中文字幕| 99热国产| 黄色乱论网站| 丁香五月综合| 沈阳熟女高潮对白视频| 97精品国产精品免费观看| 人妻aa| 国产传媒日韩| 熟女AV一区| 亚洲最大的综合性av| 91模特在线观看| 久久久人妻| 亚洲 小说 欧美 激情 另类| 色哟哟精品1精品2| 97超碰色五月| 乱伦AVxx| 欧美十八禁导航成人| 欧美黑人168页欧美黑人167| 2025亚洲男人天堂| 99热最新网址| 欧美黑人精品一区二区| 91搞逼视频| 玖玖爱视频网站| 日少妇亚洲版| 久久欧美1卡2卡3| 亚洲蜜乳av| 人人操人人摸超碰| 性爱AV天堂| AV九九| 男人的天堂午夜av| 亚洲无码超碰免费| 欧美天天综合在线| 水滴偷拍| 韩国毛片一区二区三区| 物尤视频一区二区| 麻豆 亚洲 97| 欧美97日韩精品| 欧美不卡在线美女| 最新一二三区视频| 亚州精品一区二区三区香中文字幕在线| 欧美综合娱乐久久| 人人操人人操人人操人人操人人操人人人11.CM | 亚洲污污网站| 欧美另类自拍| 中文字幕在线观看第二页| 日本黄 R色 成 人网站| 丁香五月性爱| 九九亚洲视频| 九九aV| 亚洲精品日日夜夜52| 久久亚洲欧美中文字幕国语| 天堂69亚洲精品中文字| 中文字幕一区二区视频在线观看| 超碰97国产欧美| 亚州Av天美传媒| 久久九精品| 插老姨肥穴| 岛国小电影| 99久久这里只有精品| 9久热| 一级免费啪啪片| A片三级无码| 丝袜熟女一区二区三区| 日韩精品中文字幕二区| 日本 欧美 国产一区| 久久精品三级影视| 91丨九色丨东北熟女| 国产乱伦性爱AV| 欧美日韩第一页| 337p大胆噜噜噜噜噜91Av| 色香色欲天天综合网天天来吧 | 国产超碰欧美| 久久久久女教师免费一区| 97视频一区| 亚洲自拍小说| 亚洲另类天堂| 女同女同恋久久级三级| 人人妻人射| JIZZJIZZ国产精品喷水| 中文字幕精品人妻丝袜| 97av,com| 久久色精品视频在线| 91精品人| 黄色网址在线免费观看| 五月丁香综合| 超碰97最新人妻| 97一区二区三区视频| 精品二999| 91色s| 99999国产| 国产在线综合福利网站| 日韩丰满熟妇| 亚洲日本男人天堂网| 青青草手机在线免费观看| 久久精品99久久久久久| 变态综合色| 日韩视频精品在线观看| 国内毛片国产专区二| 婷婷久久五月天| 麻豆天美传媒在线视频天堂| 天天爽入口| 可免费观看的av毛片中日美韩| 国产亚洲精品美女久久久| 手机看片1024你懂的国产| 久久人妻办公室视频| AV丝袜少妇| 久久精品综合| aⅴ日韩成人电影av在线免费看av大全 | 色网1| 国产成人五月天丁香花| av网站在线观看了| 殴美综合色88| 超碰97男女| 国产精品视频麻豆入口| 天无日色综合| 伊人宅男大香蕉| 日韩黄片视频试看| 韩国轻伦国内自拍一区| 人人妻人人爽| 国产成人无码久久精品| 亚洲和欧美裸体美女双飞视频| 色爱天堂| 国产精品熟女乱伦| 久久国产999| 91性高朝久久久久久久久| 97干在线| 天美av在线| 亚洲制服欧美另类内射| 国产久久日| 黄色香蕉视频网站一区| 97超碰色屌| 秋霞 色色| 国产精品一区人妻精品阁在线| 超碰97导航| 日韩中文字幕国产| 色鬼在线综合| 手机看片91人妻| 欧美不卡在线美女| 日韩少妇无码| 久久精品欧美一区蜜桃| 久久精品熟妇丰满人妻99| 国产 码在线成人网站| 色九九综合AV| 国产AV高清AV无码| 日本幼女18+| 十八禁视频网站| 人妻人久久精品中文字幕| 免费簧片在线观看| 亚洲欧美综合色| 久久专区| 久久夜夜夜夜| 日本熟妇人妻中出视频| 中文字幕精品三级久久久| 伊人网综合在线视频| 欧美91精彩| 日本不卡高清视频| 超碰 国产熟女精品一区| 久久久久久电影| 怡红院视频在线| 亚洲超碰97| 男人的天堂.com| 超碰吊日色| 婷婷月色| PMv在线观看| 97色97好| 五月天婷婷色| 69视频入口| 东北女人被操| 综合色图区| 999久久久| 翔田千里无码一区| 9999九九九久久久| 人人扣人人操| 国产精品人妻一区二区| 亚洲素人综合| 91在线视频免费中出| 超碰在线欧美性爱激情| 天天综合网合集91| 麻豆天美国美国产| 婷婷丁香五月天亚洲天堂网| 天天欧美| 亚洲黄a三级三级三级看三级| 日本亚洲熟女视频| 在线播放成人高清免费视频| 日韩本不卡视频在线观看 | 蜜臀久久99精品久久久久久-DVD原版全| 国产超碰国产97| 男女性感激情网站| 在线97视频| 久久人人爽av亚洲精品天堂桃色| 亚州情色j区| 18禁中文字幕| 人人摸人人入| 国产suv精品一区| 国产精品久久久久久夜夜夜| 色牛牛AV| 欧美东京热精品A∨| 久久系列| 本道在线| 超碰天天操| 亚洲成人av色网| 国产综合永久精品日韩鬼片| 午夜国产综合视频在线观看| 青草精品视频-日本久久久久网站| 99re99视频在线免费观看| 在线天堂资源亚洲| 久久九操在线观看| A啊啊在线观看| 欧美久久九九| 综合婷婷| 久久婷五月天| 国产伦乱91| 少妇一区二区三区精选| 张柏芝国产一区在线观看| 国产精品久久久久9999小说| 亚洲熟妇白浆无码AV| 一区二区视频你懂的| 国产精品情侣啪啪| 啊啊啊操一区| 色情综合网| 91干熟女| 日韩黄色成人性爱| 亚洲色综合| 天天做日日爱夜夜爽| 欧美性爱第一区| 欧美成人性爱视频在线播放 | 久热婷婷| 偷拍欧美综合| 手机不卡视频不卡在线一二三区| 六月婷激情福利天堂69| 天天综合网一91网| 啪啪视频mP4| 日本久久久久久久久| 玖玖综合.com| 狼人综合婷婷激情四射 | 97超碰无码网| aaa淫乱视频| 伊人成人情色综合| 天堂日本亚洲欧美| 国产刺激视频| 色婷视频| 立川理惠无码一区二区| 激情综合五月丁香| 中文字幕二区日韩天堂| 天天日天天色| 天天综合精品| 色五月69夫妻| 亚洲日韩久久精品一区| 91亚洲丝袜熟女| 十八禁黄色| 91精品人妻一区二区三区蜜臀| 色区97| 久久久久久久性爱| 日韩欧美大力操| 国产精品宅男免费| 婷婷五月天色| 97这里都是精品| 日韩丝袜高跟制服在线观看| 人妻蜜桃臀| 亚洲无 码A片在线观看麻豆| 亚洲综合电影| A片大香蕉在线| 欧美精品日韩久久久九 | 久男人久久| 天美传媒AV在线| 亚洲春色一区二区三区| 淫荡少妇免费| 强奸乱伦动态污图免费| 亚洲综合色男人网| 精品国产乱码久久久久久久久1| 丁香六月婷婷综合| 久久天天躁日日躁狠狠躁| 玖玖草久草99蜜月一区二区三区| 上床啊啊啊| 日本人妻中文字幕| 久久综合五月天| 丝袜天堂| 97超碰9| 亚洲成人日韩小说| 亚洲欧美校园另类春色| 91黑丝操| 人人做,人人操,人人摸| 日本有码久久| 清纯唯美亚洲另类| 亚洲国产成人精品无码专区| 97精品在线视频| 人妻精品免费一二三区| 国产精品色| 日韩天天本| 亚洲精品97| 啪啪一区| 国产外初女出血视频| 国产午夜精品在线观看| 九九色综合| 啊啊啊啊好疼视频| 人人操我人人干| 亚洲人妻一区二区三区| 啊啊啊 在线| www.黄色在线| 色大香蕉97N| 欧美国产精品久久九九| 日韩无码嘿咻黑热久| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 丝袜制服字幕在线| 青娱乐黄色录像| 精品v日韩欧美国产| m欧洲一级午老| 亚洲av成人精品一区| 日本特黄f c2| 欧美双插| 国产蜜臀精品一区免费尤物| 久热最新在线杭州| 婷婷伊人綜合中文字幕| 男人的天堂99| 成人资源中文字幕在线观看天天| 久久精品国产97欧美精品亚洲 | 中国和日本人色哪个不下载能放| 国产精品久久伊人| 女人18精品一区二区三区| 逼逼逼逼操操操操操操操操操午夜剧场| 无码人妻丰满熟妇奶水区毛片| 欧美日韩在线小说 | 日韩精品人妻中文字有码在线 | 欧美拳交在线播放| 成·人免费午夜在线观看| 欧美日不卡| 欧美亚洲中文| 欧洲Au麻豆| 欧美日韩午夜精品一区二区三区| 91欧美偷拍| 久久中文字幕一区不卡| 亚洲欧洲无码一区夜| 加勒比在线视频一区二区三区| 欧美成人国产精品| 国产成人久久久精品免费AV| 亚洲国产无码精品首页久久久| 亚州高清av| 手机在线看片免费人成视频| 天天天干977| 淫淫总合网| 免费看黄片现成| 好看的久久不射无码影视影院| 久久国产免费激情视频| 久热网| 草草影院在线视频| 天天激情综合站| 男女猛烈无遮掩视频免费软件| 色亚洲欧美| 好涩综合| 日韩大香蕉| 一级一性爱免费视频| 无码99| 日婷婷| 精品无码产区一区二| 色综合九九| 天美91| 美女黑人91神马| 99操逼| 日韩操啪| 99超碰网| 欧美综合制服在线| 免费一级视频特黄色大片| 97在线免费| 欧美熟女丝袜| 欧美久久草熟女| 欧美精品99久久久**| 97亚洲中文| 夜夜操中文字幕| 五月天偷拍| 影音先锋视频在线| 亚洲天堂男人天堂网| 中文字幕-区二区三区四区视频中国| 新婚人妻扶着粗大强行坐下| 亚洲av青草久久一区二区| 色五月AV| 亚洲欧美视| 男人久久精品| 午夜精品99久久久久传媒| 最好看的中文字幕在线2018| aaa亚无码专区| 青青草这里只有精品| surenchaopeng| 超AV色女| 麻豆天美电影一区二区| 日本福利二区视频| 精品亚洲国产成人av网站| 校园春色综合网| 综合色区偷拍| 亚洲熟女乱综合一区二区在线-...亚洲国产日韩欧美一区二区三区,久久久久久精 | 97久久精品不卡| 78p欧美| 男人的天堂2010| 日本欧美国内在线| 日韩丝袜二区| 久久精品中文字幕无码l| 超碰精品日韩欧美国产| 亚洲一区二区在线观看91| 91色夜| 99re28在线观看| 玖玖大干人妻| 欧美色图99| 亚洲影视第一页| 伊人久久亚洲色欲综合网站 | 国模无码一区二区三区在线| 在线观看无码三级少妇| 91精品久久久| 377p欧洲日本亚洲大胆| 免费一级黄色录像影片| 搞中出久久| 欧美综合娱乐久久| 强奸乱伦日韩AV| www网站黄| 国产1769在线| 开心五月深爱五月| 超碰亚洲97| 九九久久久九九| 男人的天堂成人的社区| 国产成自自拍在线观看| 日日噜噜夜夜久久亚洲一区二区| 亚洲男人综合网| 国产欧洲精品亚洲午夜拍精品| 亚洲欧美在线综合| 欧美综合综合| 亚州综合色| 欧美gv在线观看| 无码人妻精品一区二区中文| 国产成人www免费人成看片| 天天干人妇| 国产成人亚洲精品自产在线| 91精品人妻一区二区三区蜜桃臀| 久久人爽| 97操b| 26uuu最新| 欧美精品99久久久**| 久久男女激情视频网站 | 欧美亚洲手机在线| 日韩激情无码影院| 图片区小说区| 中文字幕视频2区| 欧美大色交| 唯美清纯 妖精视频| 亚洲啪啪综合?v一区综合精品区| 大黄片做爱的大的| 啪啪91| 亚洲日韩青青草色月| 中文一区二区| 一级做受视频免费是看美女| 欧美人妻一区| 久久精品视频久久久| 色欧洲97| 毛片久久| 九九色影院| 久久只有精品一区二区三区| 亚洲日本大香蕉1| 日韩欧美性爱电影在线观看| 免费A V在线播放| 久久精品视-一级做a爰片性色毛片16美国-中国女与老外在线精品 | 亚洲熟妇一,二,三期| 婷婷丁香五月天亚洲天堂网| 视频在线观看一二三区| 另类图片五月天| 综合激情二| 很很干很很操| 人妻 欧美亚洲| 日本高清视频xxxx| 夜夜嗨一区二区| 死我十八禁| 亚洲欧美在线观看无码| 亚洲国产欧美日韩人妻日中文| 欧美极品少妇| 日本成人A片免费看| 久久啊哟| 高清无码人妻久久久一区二区三区aⅴ| 九月丁香婷婷色| 91在线美女| 亚洲天堂加勒比| 亚洲熟女中文字幕在线| 色综合99999| 黄视频免费| 蜜臀AV一区二区三区激情综合| 亚洲天堂资源在线| 综合欧美日本三级| 亚洲中亚日激情视频| AV和黑人在线播放| 久久久久ab| 免费视频在线一区二区不卡| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 日本一级不卡一二区| 密乳无码| 小草av不卡亚洲二区| 青草草免费网站av| 久久中日麻豆| 欧美日韩性爱电影在线| 欧美狠狠操| 日韩黄片影院| 久婷婷一区| 亚洲一区二区三区播放在线| 自拍欧美| 精品一区二区综合熟妇| 国产人妻精品一区二区三区秋霞 | 殴美日韩m| 成全动漫视频观看免费下载| 亚洲天堂自拍| 一起草日韩| 91熟女.com| 国内精品久久久久影院亚洲| 淫纸中9区| 午夜天堂精品久久久久91| 日夜精品| 免费农村成人少妇人妻Aa一区二区视频| 91操熟女| 超碰综合色| 1禁看欧美黄片免费看| 狠狠操狠狠燥| 思思热在线| 在线免费观看高清无码视频| 亚洲欧洲无码97久久精品| 91精品女厕偷拍视频| 操逼无毒无码免费视频| 欧美日韩99| 五月婷亚洲精品天堂| 欧美成人精品一区二区三区| 久久精品中文字幕观看| 欧美日韩妖精91com| 五月丁香色综合| 日韩欧无码一区二区三区免费不卡 | 欧美在线亚洲| 蜜桃久久久久久久| 国产精品视频一区二区三区八戒| 97网站在线观看| 中文字暮97| 亚洲国产婷婷在线播放| 日日夜夜骑| 久久男人网| 久操不卡视频| a片在线播放| 超碰视97中文| 亚洲伊人久久精品狠狠在线| 亚洲黄色a级片| 天天肏天天干| 91国产丝袜美女| 大香蕉AV丝袜| 国产AV高清AV无码| 国产高清视频无码在线| 欧美亚洲韩国视频十五区 | 精品国产Av无码久久久伦古装| 超碰人妻中文在线| 密桃99999| 欧美不卡二区| 91啦人妻| 91成人无码| 亚洲亚洲亚洲天堂天堂| 欧美狠狠操| 五月天综合网| 亚洲AV无码国产成人| 无码一区免费在线不卡| 九九九不卡| 粉嫩久久久久| 蜜奶av| 水澄无码AV| 日韩一级片在线看| 天堂俺去俺来也www久久婷婷| 欧美黄业| 色97欧美| 久久超碰天天| 久湿久久 | 亚洲黄色网址视频| 欧美人人曰人人操人人射射| 9999久久久| 免费视频观看60秒| 久久精品男人的天堂| 青青操在线亚洲视频观看欧美在线 | 99久久婷婷国产综合精品草原| 最好看的中文字幕在线2018| 日韩av电影成人在线| 亚洲精品久久久久久久蜜桃臀| 青青草色AV| 亚州五月| 蜜桃传媒视频第一区入口在线看| 久久久久久久久国产| 超碰天天操你比| 天天做天天爱天天爽AV| 日韩精品高清资源在线| www鬼畜国产男人的天堂| 亚洲激情AV| 亚洲精品亚洲人成人网| 色五月丁香五月| 看一级黄色视频| 欧美特大黄一级片片免费| 夜间福利片1000无码| 日韩色欲久久一二三四区| 中文字幕日韩电影人妻| 超碰国产精品无码| 天天弄天天操| 日本免费专区| 国产精品香蕉热久久新品| 香蕉人人操tv| 爱做久久久久久| 亚洲图片偷拍视频区| 亚洲色欲天天人妻无码系列专区| 国产成人无码久久精品| 91一起操| 亚洲男人bt天堂| xxx亚洲午夜天堂| 91夜夜蜜桃臀1区2区3区| 99在线视频播放| 九九av| 麻豆熟妇乱妇熟色A片在线看| 丰满人妻-区二区三区免费看 | 8x福利精品第一福利视频导航| 成人小说视频在线精品欧美| 亚洲第一精品在线视频| 国产亚洲色婷婷久久99精品91葵花宝典| 偷窥自拍A片| 嗯啊不要在线| 精品国产72| 日日碰视频网| 熟妇女伦乱视频| 精品人妻免费观看| 国产操操日韩三级黄| 日韩AC| 国产在线不卡导航| 精国久久一区二区三区98| 曰本道人妻久久久在线不卡色视频 | 日本视频一区二区三区| 亚洲免费看片| 熟妇艹鸡八| 青青草AV色| 久草尤物| av资源在线观看少妇| 在现视频女上位好爽| 国产情色第一第二页在线观看| 成人青青草原伊人| 久久久久久久久久va| 成人av动漫在线观看| 国产天天骚| 女人18精品一区二区三区| 中文字幕欧美丝袜07资源| 亚洲制服aⅴ中文字幕| 狠狠操天天干| 精吧天堂| 日韩欧美大片免费高清啪啪| 精品-91人妻子系列| 97久久精品亚洲中六字幕| 夜夜无码| 丝袜狠狠草尤物人妻av91| 大香蕉伊然在亚洲91| 欧美色图片| 精品少妇一区二区三区在线视频| 5252色欧美在线| 欧美成人精品欧美一级乱黄一区二…| 在线播放一级无码视频 | 狠狠干91| 天天躁日日躁AAAXX| 做爱福利视频一区二区| 亚洲久久久久| 五月天色色网站| 久偷拍欧美日韩三区| 久久的免费性爱视频| 色激情五月天| 久久久久九九九九九| 影音先锋新男人| 青青11操操操操操操操操| 熟妇女伦乱视频视频 | 精品妇操一区二区三区| 1769国内精品视频| 有码免费观看| 97干色| A久久| 日韩电影中文字幕| 亚洲二区精品在线观看| 日韩欧美资源| 95自拍视频在线观看| 成年男人的天堂| 男人天堂电影院| 嗯嗯啊操我| 日日躁夜夜躁狠狠躁超爽| 欧美v亚洲v日韩v最新在线二区| 欧美 熟女 日韩| 女欧美一区二三区| 青青草吊丝| 国产精品懂色tv影视免费观看| 看日韩美女二区三区免费操逼视频 | 无码粉嫩白虎一线天b区| 男男H黄动漫啪啪无遮挡网站| 在线一区| 久久一级无码精品毛片6| 色网综合网| 久久激情亚洲精品无码?V| 91爱做| 中国女人内射6XXXXX| www被窝色com| 国产亚州高清国产拍精| 蜜桃午夜视频一区二区 | 国产婷婷一区| 国产探花日韩援交| 区一二区日韩亚洲乱码av电影| 麻豆国产精品午夜视频| 青青草黑寡妇男人天堂| 国产黄色在线播放观看| 91真人天天在线| 人人摸人人摸人人干| 夜夜嗨一区二区三区三州加勒比| 国内毛片免费h片在线| 超碰超碰超碰超碰的大鸡吧操黑丝袜| 激情第四色| 久久狠狠色噜噜狠狠狠狠97| 综合日韩激情另类图片| 北约熟女超碰| 国产精品一区二区麻豆| 色噜噜狠狠色综无码久久合欧美| 亚洲 综合 欧美| 国产综合色精品在线观看| 中文久久一区| 欧美另类综合久久| 夜夜嗨一区二区三区直播内容| 嗯嗯嗯好爽| 2019精品国产无码成人| 高清不卡 中文 人妻| 九九色热| 中文字幕乱码人妻二区三区| 国产精品3| 美女诱惑爱爱| 精品九九国产无码| 大逼色网站| 97人人爱人人做人人乐| 久久香蕉综合一本到3atv| 婷婷五月天激情四射| 中文字幕精品久久久久人妻红杏ⅰ| 天天日B夜夜干B时时操B| 嗯嗯不要视频| 男人的天堂日本东京热| 97操碰| 91精品久久久久五月天精品| K8久久久久| 精品国产一区二区三区久久久蜜臀| 中文字幕成人理论在线| 久久午夜色播影院免费高清| 91超碰碰在线| 91久精品| av资源在线观看少妇| 性无码专区2020| 成人草草视频| 白丝少妇一区二区| 五月天激情国产综合婷婷婷| 中文字幕日韩人妻视频一区二区三区 | 国产欧美另类久久久精品课程| 一及黄久一点| 发朗少妇买婬全视频中文| 九九久久一区二区伦理| 亚洲成a人v欧美综合天堂下载 | 综合免费无码中文| 秋霞午夜成人福利片片| 亚洲综人网| 九九九精品一区二区无码| 天美麻豆精品视频99| 久久av成人无码免费| 一级片视频啪啪| 91女日逼| 中文字幕午夜精品久久久| 久久亚洲不卡一区二区三区| 人妻久久久| 日本肏逼视频在线观看| 日韩无码a片| 日本国产欧美一区三区二区| 蜜臀99久久精品久久久久久| 亚洲综合图色在线| 亚洲中文字幕乱码无码一区二区| 色色色网站| 国产成人无码久久精品| 九月丁香综合网| 成人乱人伦一区二区| 蜜乳中文字幕a在线| 成人性生活高清视频在线播放| 一级免费精品| 青青草久久在线| 中文字幕人乱码中文字的预防方法| 亚洲综合888| 怡红院怡春院| 久久亚州高清| 在线 亚洲 网爆 自拍| 丰满欧美少妇| 欧美色偷拍 | 91九九九吃| 日韩欧美午夜视频在线| 国产精品视频自拍在线| 三男一女不戴套的A片| 日韩熟女无码| 久久午夜鲁丝片| 国产精品原创巨作?v网站| 午夜福利1区2区3区| 自拍偷拍草一草| 国产精品成人久久一区二区三区| 久久久久亚洲三级电影| 午夜激情成人在线观看| 成人a大片在线观看| 人人操人人摸人人看人人插| 老司机天天操| 青娱乐国产精品| 99热这里只有精品地址| 丁香五月大香蕉| 96久久科窝| 黑人中出21连凳花野真衣| 影音先锋一区二区在线资源| 久久伦理视频久久大香蕉视频| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 精品欧美老熟女一二区| 思思热在线视频在线| 八戒午夜福利理论片| 亚洲一区二区久久久久| 国产 日韩 另类 视频一区爱| 男女一级A片大黄,一进一出| 伊人色综合网| 哈哈操电影AV| 欧洲大香蕉| 大香蕉淫人| 日韩精品在线放| 久久久久久久亚洲Av无码| 欧美日韩性爱视屏免费看了| 少妇二级| 亚洲欧美国产va在线| 97超碰公开| 天天射天天操天天干天天吃2018| 色在线亚洲视频www| 免费黄色视频网址| 黄色小说亚洲| 青青操日韩| 被操高清无码视频| av婷婷色婷婷色六月| 亚州情色j区| 天天拍天| 亚洲无992tv| 在线观看日韩av不卡| 亚洲18禁| 久久久天美| 高清国产精品福利网站| 老司机射| 厕所偷拍在线| 五月天精品| 国产精品ⅴ无码大片在线看.| 精品人妻高清麻豆av| 久久久久9999| 日韩一级片在线看| 1区2区3区中文字幕日韩| 久久精品成人| 亚洲自拍天堂| 九九九网页| 色九九久九九| 久干9操| 大香蕉伊人一区在线观看| 四虎影视 亚洲无码| 日本高清免费一本视频在线观看| www久| 青草园大香蕉| 久久久一区二区三区三州| 色香蕉影院| 五月天亚洲网| a一区二区三区乱码在线| 美女黄色一级A视频| 天天热精品| 亚洲第一狼人丝袜美女另类 | 日少妇视频| 探花激情视频| 狠狠操狠狠燥| 国产精品无码久久久久2028| 久久精品亚洲婷婷| 亚洲熟女人妻中文字幕一区二区| 久久久久亚洲Aⅴ无码| 四虎国产成人精品免费一女五男| 国产精品操| 婷婷五月天成人网| 亚欧操逼片在线观看 | 啊啊好多水| 粉嫩av平台| 91人妻丝袜无码| 久久9久| 蜜臀久久99精品久久久老,,| 久久久极品| 精品超碰国产| 天美传媒精品久久视频| 天天天天天天天天天天干美女| 在线黄色污污网站| 最新av网站在线观看| 色第一页| 奇米四色网| 操逼精品视频| 亚欧性爱无码| 国产熟女精品区| 午夜一区二区三区国产| 精品人妻一区二区三区夜夜| 吖在线不卡一区二区国产剧情| 国产福利夜| 国产精品亚洲无码| 五月开心久久AV官网| 伦伦成年午夜免费视频| 欧洲精品久久| 国内毛片国产专区二| 超碰欧美97资源| 毛片电影一区二区三区| 高精欧美色| 国内91熟女人妻丝袜天天精品视频在线| 澳门色噜噜色噜噜色噜噜色噜噜色噜噜| 噜噜噜狠狠色综合| 78超碰| 久久这里精品国产99丫e6| 国产无码三级视频在线观看| 国产91精品久久久久久久网曝门| av一区二区三区四区| 亚洲黄色网址| 久久丁香五月天| 久草午夜| 欧美色一二三| 亚洲精品亚洲人成在线麻豆| 欧美97av| 91是天天| 久久综合亚洲色1080p| 一区二区三区四区五区久久久久久| www.色99| 最新亚洲黄色免费电影| 激情熟女12P| 日本黄色天堂| 九九九九久久久| 国产不良强奸视频免费看| 99在线啪| 天天综合~91入口| 啪啪视频亚洲第一| 精品国产乱码久久久久久久久久毛片| 夜夜爽33333| 伊人精品久久网站| 欧美熟妇色| 天天舔九色婷婷| 99ri视频| 欧美偷拍区| 久久香蕉国产线看观看亚洲女人 | 91大胆欧美| 干日本人少妇午夜寂寞影院| 天天综合网~91| AV99热18这里只有精品| 色婷婷久久| 免费1级a做爰片观看| 欧美碰碰综合色| 超碰综合色| 懂色AV一区二区三区| 亚洲欧美精品91| 青青草吊丝| 国产无套粉嫩白浆在| 免费精品无码一级毛片牛牛影视 | 俞拍自拍| 熟妇一区二区三区| 欧美黄片视频在线观看免费 | 激情国产乱伦Av| 麻豆久久一区二区三区| AV男人天堂网| 色哟哟-国产专区| 久久曰曰| 熟女精品va中文字幕| 精品无码欧美三级| 久操免费电影| 偷拍片久久| 岛国人妻少妇av在线观看| 伊人五月天| 国内精品伊人久久久久影院会| 秋霞一级鲁丝片A片| 性一级黄色录像片网站导航 | 成人av动漫在线观看| 精品九九国产无码| 欧美日韩插逼视频| 亚洲成人贴图| 五月天婷婷社区| 中日韩久久久免费看| 中文一区在线日| 9久久美女首页| 日韩一区二区熟女| 日本天天吊| 蜜臀av一区二区三区免费观看| 国产成人精品日本亚洲语言| 九月丁香综合网| 一起草日韩| 波多野42部无码喷潮在线观看 | 国产精品欧美激在线| 欧美最婬乱婬爆婬性视频 | 青青草综合在线| 人妻美腿丝袜日韩| 屁股久久久久久久久| 亚洲欧美日韩电影网站一区| 操逼视频国产无套| 久久超碰亚洲人| 亚洲?V无码专区在线电影| 老司机香蕉| 天天舔天天日天天射| 综合网久久| 亚洲欲色9532548967一区| 国产日比| av中文在线| 久久久久久久人妻| 激情五月天视频| 久久9视频| 色九月| 亚洲超碰在线| 天天爽人人综合免费7799| 亚欧高清v| 丁香五月性| 婷婷伊人綜合中文字幕| 日韩午夜啪啪视频| 色婷视频| 丝袜美腿欧美| 搡老女人老妇女老妇老熟女怎么读| 天天肏美女| 熟女中出视频| 欧美韩国你懂得在线 |