亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

ARTICLE DETAIL

資訊詳情

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

調(diào)試JavaScript必備:Shell基礎(chǔ)、管道、環(huán)境變量與進(jìn)程管理實(shí)戰(zhàn)

調(diào)試JavaScript必備:Shell基礎(chǔ)、管道、環(huán)境變量與進(jìn)程管理實(shí)戰(zhàn) 終端里折騰 JavaScript 的時(shí)候你有沒有遇到過這種情況代碼邏輯本身沒什么大問題但命令行敲下去就是一堆看不懂的報(bào)錯(cuò)排查了半天最后發(fā)現(xiàn)是 Shell 基礎(chǔ)不過關(guān)。路徑里有個(gè)空格沒加引號、環(huán)境變量沒生效、管道拼接順序不對、CtrlC 按了沒反應(yīng)導(dǎo)致調(diào)試進(jìn)程一直掛著——這些場景每天都在真實(shí)發(fā)生而且大部分教程默認(rèn)你已經(jīng)會(huì)了根本不會(huì)展開講。這篇博文就把 Shell 語言的基礎(chǔ)知識放在“JavaScript 調(diào)試終端”這個(gè)具體場景里重新梳理一遍。我會(huì)從實(shí)際操作出發(fā)講清楚在終端里調(diào)試 JS 時(shí)最常用的 Shell 概念、命令組合方式以及踩過坑之后才真正明白的細(xì)節(jié)。它適合剛?cè)腴T前端、全棧開發(fā)的同學(xué)也適合寫了很久代碼但 Shell 一直“夠用就行”的老手——說不定能幫你補(bǔ)上幾個(gè)盲點(diǎn)。1. Shell 基礎(chǔ)認(rèn)知調(diào)試 JS 前要搞懂的幾個(gè)底層邏輯1.1 為什么調(diào)試 JS 需要懂 Shell很多同學(xué)的思路是這樣的JavaScript 是編程語言Shell 是命令行兩者好像沒什么關(guān)系。但真到了開發(fā)調(diào)試階段你會(huì)發(fā)現(xiàn)這個(gè)想法很快就會(huì)被現(xiàn)實(shí)打臉。無論是 npm 安裝依賴、啟動(dòng)開發(fā)服務(wù)器、跑單元測試還是查看日志、排查接口報(bào)錯(cuò)每一個(gè)環(huán)節(jié)本質(zhì)上都是在 Shell 環(huán)境里完成的。Node.js 本身就是一個(gè)命令行工具它從 Shell 啟動(dòng)、往 Shell 的標(biāo)準(zhǔn)輸出寫日志、通過退出碼告訴 Shell 這次運(yùn)行是成功還是失敗。不懂 Shell 的底層邏輯很多報(bào)錯(cuò)在你眼里就是玄學(xué)。舉個(gè)最簡單的例子。我寫一個(gè)測試腳本 test.js// test.js console.log(這是一條正常日志); console.error(這是一條錯(cuò)誤信息);在終端執(zhí)行node test.js兩行字都會(huì)打印到屏幕上。但如果執(zhí)行node test.js output.txt你會(huì)驚訝地發(fā)現(xiàn)終端里只剩下一行“這是一條錯(cuò)誤信息”“這是一條正常日志”被寫進(jìn)了文件。原因在于 Shell 里標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤是兩條獨(dú)立的通道默認(rèn)只重定向標(biāo)準(zhǔn)輸出不重定向標(biāo)準(zhǔn)錯(cuò)誤。不明白這個(gè)機(jī)制你很可能在調(diào)試時(shí)找不到“消失”的日志文件甚至誤以為代碼根本沒有執(zhí)行到那一行。再比如退出碼。Shell 中每條命令執(zhí)行完都會(huì)返回一個(gè)數(shù)字0 代表成功非 0 代表失敗。你可以用echo $?查看上一條命令的退出碼。寫自動(dòng)化腳本時(shí)經(jīng)常要用和||來根據(jù)退出碼做邏輯拼接。調(diào)試 JS 程序時(shí)未捕獲的異常通常會(huì)讓 Node 進(jìn)程以退出碼 1 結(jié)束于是你的 Shell 腳本會(huì)順著||的路徑繼續(xù)執(zhí)行清理邏輯。這個(gè)聯(lián)動(dòng)機(jī)制就是 Shell 與 JavaScript 協(xié)作的基礎(chǔ)。1.2 別再把 Shell、終端、命令行混為一談我在帶新人時(shí)幾乎每次都會(huì)發(fā)現(xiàn)他們把“終端”“命令行”“Shell”當(dāng)成同一個(gè)東西。這樣理解問題不大但在排查具體問題時(shí)就會(huì)迷糊。比如有人問“為什么我在終端里輸入 node 命令抱 command not found”如果你把終端、命令行、Shell 混在一起就很難定位問題到底出在哪一層。簡單做個(gè)區(qū)分終端準(zhǔn)確說是終端模擬器是一個(gè)界面程序負(fù)責(zé)接收你的鍵盤輸入并把結(jié)果顯示到屏幕上。macOS 自帶的 Terminal、Windows 上的終端工具、VS Code 內(nèi)置的終端面板都屬于終端模擬器。命令行是交互方式就是你打開終端后敲命令、按回車、看到輸出這樣一個(gè)交互過程。Shell 才是真正解析命令、查找程序、執(zhí)行程序的解釋器。它收到你敲入的字符串之后按語法去拆分、判斷然后找到對應(yīng)的可執(zhí)行文件并啟動(dòng)它。打個(gè)生活化的比方終端是廚房的傳菜窗口Shell 是后廚的廚師長命令行是顧客遞進(jìn)來的點(diǎn)菜單而 node 就是后廚里的一臺烤箱。你通過傳菜窗口遞菜單廚師長按菜單內(nèi)容調(diào)用烤箱。表面上看你在“窗口”干活真正干活的是廚師長。調(diào)試 JavaScript 時(shí)理解這層關(guān)系尤其重要。比如你改了環(huán)境變量之后發(fā)現(xiàn)終端里沒有生效其實(shí)是因?yàn)楫?dāng)前終端窗口里的 Shell 進(jìn)程還保留著舊的環(huán)境變量快照需要重新加載配置文件或者新開一個(gè)窗口Shell 才會(huì)重新讀取環(huán)境變量。如果你不清楚 Shell 是一個(gè)常駐進(jìn)程光在終端里反復(fù)輸命令是沒用的。1.3 環(huán)境變量與 PATH 機(jī)制命令為什么能被找到在調(diào)試終端里敲node -vShell 是怎么定位到 node 可執(zhí)行文件的答案就在 PATH 環(huán)境變量里。PATH 是一個(gè)用冒號分隔的目錄列表Shell 拿到命令名時(shí)會(huì)按照這個(gè)列表挨個(gè)目錄去查找匹配的可執(zhí)行文件找到就運(yùn)行全找不到就報(bào)command not found。你可以用echo $PATH查看當(dāng)前路徑列表用which node查看 Shell 實(shí)際執(zhí)行的是哪個(gè) node 文件。這一步在多版本 Node 切換時(shí)特別重要。我見過不少同學(xué)裝了 nvm 管理 Node 版本結(jié)果切換之后node -v顯示的版本沒變一查才發(fā)現(xiàn)是系統(tǒng)目錄里的舊版本優(yōu)先級更高排在 nvm 軟鏈接目錄前面。調(diào)整 PATH 順序或者檢查 npm 全局目錄是否覆蓋了 nvm 的軟鏈問題很快就解決了。對 JavaScript 調(diào)試來說PATH 還有一個(gè)容易被忽略的衍生問題node_modules/.bin目錄。平時(shí)執(zhí)行npm run dev時(shí)npm 會(huì)臨時(shí)把node_modules/.bin加到 PATH 的最前面這樣你才能在 npm scripts 里直接寫webpack --config webpack.config.js而不必寫完整路徑。明白了這一點(diǎn)你就知道為什么有時(shí)候“npm scripts 里能跑命令但手敲同樣的命令卻報(bào) command not found”——因?yàn)槟惝?dāng)前的 Shell 并沒有自動(dòng)找到node_modules/.bin。2. 調(diào)試終端里的高頻 Shell 操作與實(shí)操細(xì)節(jié)2.1 目錄切換與文件定位的實(shí)用技巧調(diào)試 JS 項(xiàng)目時(shí)最常見的操作就是在項(xiàng)目目錄、配置文件目錄、日志目錄之間來回切換?;A(chǔ)的pwd、cd、ls誰都會(huì)用但有幾個(gè)細(xì)節(jié)可能很多老手都沒注意。cd -可以跳回上一次所在的目錄在調(diào)試時(shí)頻繁地在工作目錄和配置文件目錄之間切換這個(gè)命令能省掉不少重復(fù)輸入。ls -la用來查看隱藏文件比如.npmrc、.node_repl_history這類文件平時(shí)不會(huì)出現(xiàn)在默認(rèn)列表里但當(dāng) npm 安裝行為異常、Node REPL 歷史記錄不生效時(shí)它們往往是線索。ls還可以接通配符做過濾比如ls src/**/*.js列出 src 目錄下所有 JS 文件在確認(rèn)“某個(gè)文件到底有沒有被打包”時(shí)很直觀。文件搜索是調(diào)試?yán)锪硪粋€(gè)高頻需求。如果項(xiàng)目很大想快速定位某個(gè)函數(shù)定義在哪個(gè)文件我習(xí)慣用rg而不是grep它默認(rèn)忽略.gitignore里的目錄、性能更好而且輸出帶高亮。基本用法是rg 函數(shù)名 src/。如果你的機(jī)器還沒裝 rg用系統(tǒng)自帶的 find 也能干類似的事find src -name *.js -type f可以列出 src 下所有 JS 文件配合xargs grep 關(guān)鍵詞也能完成搜索只是效率差一些。這里有個(gè)很容易踩的坑路徑里有空格。Shell 默認(rèn)用空格做參數(shù)分隔所以cd ~/My Documents/project會(huì)被拆成兩個(gè)參數(shù)直接報(bào)錯(cuò)。正確處理方式是給路徑加引號cd ~/My Documents/project或者用反斜杠轉(zhuǎn)義空格cd ~/My\ Documents/project。我見過有人因?yàn)闆]處理空格在 Windows 和 macOS 的用戶目錄名里反復(fù)碰壁卻不知道問題出在哪。2.2 管道、重定向與日志排查的配合方式管道的概念很多人其實(shí)一知半解只是知道|能把命令串起來。但真正用好它調(diào)試效率能提升一個(gè)檔次。管道的作用是把左邊命令的標(biāo)準(zhǔn)輸出接到右邊命令的標(biāo)準(zhǔn)輸入讓兩個(gè)原本獨(dú)立的進(jìn)程形成一條處理鏈。比如調(diào)試時(shí)用curl請求接口拿到 JSON直接看一大坨字符串不太方便我一般會(huì)加上jqcurl -s http://localhost:3000/api/user | jq .這樣 JSON 會(huì)格式化輸出還能直接提取字段比如| jq .data.name就能拿到想要的那個(gè)值。左邊 curl 只需專注請求右邊 jq 專注解析職責(zé)分離得很干凈。重定向稍微比管道復(fù)雜一些但核心也就三個(gè)符號覆蓋寫入追加寫入2重定向標(biāo)準(zhǔn)錯(cuò)誤。調(diào)試時(shí)最常用的是把日志同時(shí)輸出到屏幕和文件我一般這樣寫node server.js 21 | tee server.log21表示把標(biāo)準(zhǔn)錯(cuò)誤合并到標(biāo)準(zhǔn)輸出tee則把收到的內(nèi)容一份輸出到屏幕、一份寫入文件。這樣既能在終端實(shí)時(shí)看日志又能留下完整記錄供后續(xù)排查。如果只想在程序崩潰時(shí)保留錯(cuò)誤信息可以用node server.js 2 error.log把錯(cuò)誤通道單獨(dú)落盤。還有一個(gè)細(xì)節(jié)是管道的退出碼問題。默認(rèn)情況下一條管道命令的退出碼由最后一個(gè)命令決定。如果你寫node test.js | grep error就算 node 崩了只要 grep 找到了內(nèi)容整條命令的退出碼就是 0。在需要嚴(yán)格校驗(yàn)每個(gè)步驟是否成功的自動(dòng)化腳本里這會(huì)造成誤判。解決辦法是在 Shell 里開啟set -o pipefail讓管道中任何一個(gè)命令失敗都反映到最終退出碼上這個(gè)習(xí)慣我非常推薦。2.3 后臺運(yùn)行、進(jìn)程管理與 CtrlC 的真正行為調(diào)試 JS 服務(wù)時(shí)經(jīng)常會(huì)遇到想要保持某個(gè)進(jìn)程運(yùn)行、同時(shí)還能繼續(xù)在終端執(zhí)行其他命令的情況。最簡單的做法是在命令末尾加把它放到后臺node server.js server.log 21 注意這里我一定加重定向否則后臺進(jìn)程的日志會(huì)直接打到當(dāng)前終端和之后敲的命令輸出混在一起非?;靵y。啟動(dòng)后可以用jobs查看當(dāng)前 Shell 管理的后臺任務(wù)用fg %1把編號 1 的任務(wù)拉回前臺用bg把它重新放到后臺。如果某個(gè)任務(wù)是前臺阻塞狀態(tài)直接按CtrlZ可以把它掛起再用bg轉(zhuǎn)后臺繼續(xù)運(yùn)行。關(guān)于 CtrlC很多人以為它“終止一切”。準(zhǔn)確地說它向當(dāng)前前臺進(jìn)程組發(fā)送 SIGINT 中斷信號但進(jìn)程可以選擇忽略或攔截。更麻煩的情況是你啟動(dòng)的是 npm scripts它里面又啟動(dòng)了 node 子進(jìn)程。按下 CtrlCnpm 這個(gè)父進(jìn)程是退了但它管理的 node 子進(jìn)程可能沒被清理繼續(xù)占用端口。這就是為什么有時(shí)候改完代碼重啟服務(wù)卻提示端口被占用。遇到這種情況我一般先用ps aux | grep node查看殘留進(jìn)程再用kill 進(jìn)程ID清理而不是直接重啟終端。如果希望進(jìn)程在終端關(guān)閉之后繼續(xù)運(yùn)行可以用nohup配合后臺符號nohup node server.js server.log 21 nohup會(huì)讓進(jìn)程忽略 SIGHUP 掛斷信號這樣即使關(guān)閉終端服務(wù)也還在跑。對應(yīng)清理這類進(jìn)程時(shí)單純按 CtrlC 是沒用的需要重新找到 PID 再kill這一點(diǎn)在線上排查時(shí)特別常見。3. 用 Shell 搭配 JavaScript 調(diào)試的實(shí)戰(zhàn)過程3.1 準(zhǔn)備一個(gè)可反復(fù)調(diào)試的 Node.js 示例光講理論容易飄我用自己的常用手法演示一個(gè)完整的調(diào)試閉環(huán)。假設(shè)我們有一個(gè) Node.js 寫的 HTTP 接口服務(wù)內(nèi)部模擬調(diào)用第三方 API需要?jiǎng)討B(tài)傳參、輸出分色日志、并支持環(huán)境變量控制行為。在實(shí)際調(diào)試中這種場景太常見了——本地聯(lián)調(diào)時(shí)后端接口沒完全就緒前端或者別的調(diào)用方需要先跑通全鏈路。我先把示例代碼寫好保存為 server.js// server.js const http require(http); const port process.env.PORT || 3000; const MODE process.env.MODE || development; const server http.createServer((req, res) { const timestamp new Date().toISOString(); console.log([${timestamp}] 收到請求: ${req.url}); console.error([${timestamp}] 模擬第三方接口耗時(shí)過長...); if (MODE error) { res.statusCode 500; res.end(JSON.stringify({ code: 500, message: 內(nèi)部服務(wù)異常 })); return; } const params new URLSearchParams(req.url.split(?)[1] || ); const name params.get(name) || anonymous; if (name fail) { process.exit(1); } res.setHeader(Content-Type, application/json); res.end(JSON.stringify({ ok: true, name, mode: MODE, port })); }); server.listen(port, () { console.log(服務(wù)已啟動(dòng): http://localhost:${port} 當(dāng)前模式: ${MODE}); });這段代碼里我刻意混入了正常日志和錯(cuò)誤日志還留了環(huán)境變量切換行為和退出碼模擬。調(diào)試的目標(biāo)就是通過 Shell 命令把日志留底、動(dòng)態(tài)切換模式、模擬異常退出并觀察各種情況下的輸出。啟動(dòng)之前先初始化項(xiàng)目并確認(rèn)依賴npm init -y node server.js終端會(huì)打印“服務(wù)已啟動(dòng): http://localhost:3000”。這樣一個(gè)最小可調(diào)試環(huán)境就搭好了。3.2 組合命令完成一個(gè)完整的調(diào)試閉環(huán)現(xiàn)在模擬一次真實(shí)的接口聯(lián)調(diào)。我先讓服務(wù)在后臺跑起來并把日志落盤node server.js server.log 21 然后用 curl 發(fā)起請求curl -s http://localhost:3000/api/user?name張三 | jq .此時(shí)應(yīng)該看到格式化后的 JSON{ ok: true, name: 張三, mode: development, port: 3000 }調(diào)試過程中如果需要同時(shí)觀察請求結(jié)果和日志文件可以用tail -f server.log實(shí)時(shí)追蹤日志變化并在另一個(gè)終端繼續(xù)發(fā)請求。這種“一個(gè)終端看日志、一個(gè)終端發(fā)請求”的模式是我日常排查接口問題的標(biāo)配。如果返回的 JSON 結(jié)構(gòu)太深還可以用 jq 直接過濾比如| jq .data.list[].id提取數(shù)組里的字段不用再復(fù)制到編輯里手動(dòng)格式化。接著模擬一次錯(cuò)誤場景。我故意讓服務(wù)以錯(cuò)誤模式運(yùn)行MODEerror node server.js這個(gè)命令的含義是設(shè)置環(huán)境變量 MODE 為 error然后啟動(dòng)節(jié)點(diǎn)服務(wù)。在終端里可以看到服務(wù)端口輸出的是“當(dāng)前模式: error”請求接口返回 500。如果要避免端口與之前后臺進(jìn)程沖突記得先 kill 掉之前的進(jìn)程再用新端口運(yùn)行PORT4000 MODEerror node server.js這樣既驗(yàn)證了環(huán)境變量參數(shù)化運(yùn)行又實(shí)際演示了通過 Shell 向 Node 進(jìn)程傳參最原始的方式。很多時(shí)候還要把調(diào)試過程中所有輸出匯總到一個(gè)文件方便復(fù)盤。我常用script命令錄制整個(gè)終端會(huì)話或者直接用tee把關(guān)鍵輸出同時(shí)落到文件node server.js 21 | tee /tmp/debug_$(date %Y%m%d_%H%M%S).log這里$(date ...)是命令替換Shell 會(huì)先執(zhí)行 date 得到當(dāng)前時(shí)間戳再把它拼進(jìn)日志文件名。這樣每次調(diào)試日志文件名都是唯一的不會(huì)互相覆蓋后面排查歷史問題特別有用。3.3 Shell 向 JavaScript 傳參與環(huán)境變量的配合上面例子已經(jīng)開始用環(huán)境變量了但很多新手卡在“Shell 向 JS 傳參”這件事上。Node.js 接收參數(shù)主要有兩條路一個(gè)是process.argv一個(gè)是環(huán)境變量。process.argv是命令行參數(shù)數(shù)組。process.argv[0]是 node 路徑process.argv[1]是腳本路徑從process.argv[2]開始才是你真正傳入的參數(shù)。直接運(yùn)行時(shí)這樣傳node server.js --port 5000 --mode debug對應(yīng)代碼里要自己解析 argv。實(shí)際項(xiàng)目里大家多半會(huì)引入?yún)?shù)解析工具比如使用 yargs 或 commander 這類庫但原理都是基于process.argv在解析。真正容易被忽略的是給 npm scripts 傳參。如果你的 package.json 里寫了{(lán) scripts: { start: node server.js } }直接執(zhí)行npm run start --port 5000會(huì)發(fā)現(xiàn)參數(shù)沒生效。原因在于 npm 會(huì)把--port 5000解析成 npm 自己的參數(shù)不會(huì)自動(dòng)透傳給 node。正確的寫法是加--分隔符npm run start -- --port 5000--后面的內(nèi)容會(huì)被原樣傳給腳本然后 node 才能通過process.argv拿到。環(huán)境變量傳參是另一種思路好處是天然不會(huì)被參數(shù)解析庫干擾。Shell 里臨時(shí)設(shè)置環(huán)境變量并啟動(dòng)進(jìn)程的語法是PORT5000 MODEproduction node server.js代碼里用process.env.PORT讀取。這種方式在臨時(shí)聯(lián)調(diào)時(shí)非常方便但是要注意它只在當(dāng)前命令的進(jìn)程環(huán)境里生效不會(huì)影響你當(dāng)前 Shell 其他命令。如果你希望這些變量全局可用就需要寫進(jìn).bashrc或.zshrc或者用export PORT5000顯式導(dǎo)出。在 Windows 上也這樣寫會(huì)直接報(bào)錯(cuò)因?yàn)?set 語法不同??缙脚_項(xiàng)目里一般用cross-env這類小工具來解決npx cross-env PORT5000 MODEproduction node server.js原理是在跨平臺工具內(nèi)部把環(huán)境變量設(shè)置好再啟動(dòng)子進(jìn)程從而屏蔽掉不同系統(tǒng)之間的差異。我在團(tuán)隊(duì)聯(lián)調(diào)時(shí)經(jīng)常用這個(gè)方案因?yàn)槌蓡T之間操作系統(tǒng)不一致的情況太常見了。4. 常見問題與排查技巧實(shí)錄4.1 command not found 的三種原因command not found大概是調(diào)試終端里出現(xiàn)頻率最高的報(bào)錯(cuò)。我梳理下來無外乎三種原因命令沒安裝、安裝路徑不在 PATH 里、PATH 被額外配置覆蓋了。先排查第一種直接which 命令名看能否找到可執(zhí)行文件找不到就說明沒安裝。第二種比較隱蔽比如你明明用某個(gè)工具安裝了 Node 到自定義目錄卻包 command not found那是因?yàn)檫@個(gè)目錄不在 PATH 里面。第三種常見于 nvm、多版本管理器共存的環(huán)境which node顯示的你以為是 nvm 的路徑實(shí)際卻是系統(tǒng)目錄里另一份舊版本。如果你剛剛修改過配置文件比如.zshrc里新增了export PATH$HOME/.local/bin:$PATH在當(dāng)前終端直接執(zhí)行命令并不會(huì)自動(dòng)生效Shell 不會(huì)因?yàn)槲募兓椭匦录虞d。要么新開一個(gè)終端要么執(zhí)行source ~/.zshrc。source會(huì)把配置文件里的內(nèi)容重新執(zhí)行一遍讓當(dāng)前 Shell 進(jìn)程拿到最新的環(huán)境變量。我經(jīng)常看到有人明明改了 PATH 卻在當(dāng)前終端反復(fù)嘗試?yán)速M(fèi)時(shí)間。4.2 端口被占用與 EADDRINUSE 的處理流程啟動(dòng) Node 服務(wù)時(shí)如果報(bào)Error: listen EADDRINUSE: address already in use :::3000說明端口 3000 已經(jīng)被別的進(jìn)程占用。處理思路很直接先找到占用的進(jìn)程再?zèng)Q定是換端口還是清進(jìn)程。macOS 和 Linux 上我習(xí)慣用lsof -i :3000查看占用情況輸出里能看到 PID。然后kill PID終止進(jìn)程。Windows 上則用netstat -ano | findstr :3000拿到 PID 后用taskkill /PID 編號 /F。這里有個(gè)細(xì)節(jié)要提醒直接kill -9雖然簡單但 SIGKILL 信號不會(huì)給進(jìn)程任何清理機(jī)會(huì)可能會(huì)導(dǎo)致臨時(shí)文件沒刪干凈、端口 Socket 處于半開狀態(tài)。正常情況下建議先發(fā)kill即 SIGTERM讓進(jìn)程自己退出等幾秒沒反應(yīng)再用kill -9。我在維護(hù)本地開發(fā)環(huán)境時(shí)遇到頑固的 node 進(jìn)程一般用pkill -f server.js能按進(jìn)程命令行匹配同時(shí)清理多個(gè)殘留進(jìn)程效率很高。4.3 CtrlC 無效與殘留子進(jìn)程的雙層問題用 npm 啟動(dòng)服務(wù)時(shí)按下CtrlC看著終端回到提示符了以為自己已經(jīng)把服務(wù)停掉了。結(jié)果再去請求接口竟然還有響應(yīng)這就是 npm 腳本和它子進(jìn)程的“雙層進(jìn)程”問題。npm scripts 本質(zhì)上是在 Shell 里再啟動(dòng)一個(gè) Shell 來跑命令命令里又啟動(dòng)了 node。你的 CtrlC 信號默認(rèn)發(fā)給“前臺進(jìn)程組”正常情況下整個(gè)組都會(huì)收到信號。但如果 npm 腳本里用了后臺符號node 子進(jìn)程可能脫離了前臺進(jìn)程組信號就傳不到它那里。殘留進(jìn)程繼續(xù)占著端口后續(xù)更新代碼重啟時(shí)會(huì)莫名其妙地報(bào)端口沖突。遇到這種問題我的排查路徑是先用lsof -i :端口找到殘留 PID確認(rèn)是 node 進(jìn)程再按需清理。如果不想用這么麻煩的方式可以在 npm scripts 里借助進(jìn)程管理工具來統(tǒng)一管理生命周期比如把服務(wù)掛到pm2這類進(jìn)程守護(hù)工具下面停止時(shí)用工具自帶的 stop 命令它會(huì)負(fù)責(zé)把子進(jìn)程樹一并清干凈。或者直接用node --watch server.js這種 Node 自帶的監(jiān)視重啟模式來調(diào)試改代碼后自動(dòng)重啟無需手動(dòng)管理前后臺進(jìn)程。4.4 路徑空格、權(quán)限問題與其他雜項(xiàng)路徑帶空格的問題前面已經(jīng)提過這里強(qiáng)調(diào)一次只要路徑中包含空格、括號等特殊字符要么給整個(gè)路徑加引號要么用反斜杠轉(zhuǎn)義。忘記處理空格在 Windows 系統(tǒng)或者 macOS 中文用戶名下幾乎必然中招而且報(bào)錯(cuò)信息常常讓人摸不著頭腦因?yàn)?Shell 會(huì)把它拆成多個(gè)參數(shù)去執(zhí)行。權(quán)限問題是另一個(gè)高頻坑。當(dāng)你看到EACCES: permission denied時(shí)說明當(dāng)前用戶對文件或目錄沒有寫權(quán)限。先ls -la看屬主和權(quán)限位再用chmod調(diào)整。我的原則是盡量不用sudo因?yàn)橐?root 權(quán)限運(yùn)行 npm install 會(huì)把一堆文件的屬主改成 root后續(xù)普通用戶想改都改不了還得再折騰一圈 chown。真遇到需要全局裝工具包建議先確認(rèn) npm 的全局目錄可寫或者用 nvm 把整個(gè) Node 環(huán)境裝到用戶目錄下從根源上避開系統(tǒng)權(quán)限問題。寫代碼時(shí)還要注意隱藏文件對調(diào)試的影響。比如.npmrc里配置了鏡像源或代理可能導(dǎo)致依賴安裝行為與預(yù)期不同.env文件被某些工具自動(dòng)加載會(huì)讓你的環(huán)境變量“憑空”出現(xiàn)反而掩蓋了傳參問題。調(diào)試時(shí)如果發(fā)現(xiàn)環(huán)境變量跟預(yù)期不符先檢查這兩類文件再懷疑代碼邏輯。5. 高頻命令速查與個(gè)人經(jīng)驗(yàn)補(bǔ)充為了避免讀者邊看邊忘我把前面涉及的常用命令整理成一張速查表可以直接收藏相當(dāng)于在調(diào)試終端里給自己備一份作弊卡。命令用途調(diào)試場景舉例pwd顯示當(dāng)前目錄確認(rèn)工作目錄是否符合預(yù)期cd -回到上一個(gè)目錄在項(xiàng)目目錄和日志目錄間切換ls -la列出全部文件包括隱藏文件檢查 .npmrc、.env 等配置rg 關(guān)鍵詞 目錄快速搜索文件內(nèi)容定位函數(shù)、字符串首次出現(xiàn)的位置echo $?查看上一條命令的退出碼判斷 node 進(jìn)程是否異常退出node xxx.js log 21把標(biāo)準(zhǔn)輸出和錯(cuò)誤一起寫入文件記錄完整調(diào)試日志tail -f log持續(xù)追蹤日志文件實(shí)時(shí)觀察服務(wù)運(yùn)行狀態(tài)curl -s URLjq .字段發(fā)請求并解析 JSONnode xxx.js 后臺運(yùn)行進(jìn)程保持服務(wù)運(yùn)行、騰出終端jobs/fg/bg管理 Shell 后臺任務(wù)前后臺任務(wù)調(diào)換lsof -i :3000查看端口占用排查 EADDRINUSEkill PID發(fā)送中斷信號給進(jìn)程正常停止調(diào)試進(jìn)程pkill -f 關(guān)鍵詞按命令行匹配批量清理進(jìn)程清理殘留 node 進(jìn)程MODEdev node xxx.js用環(huán)境變量控制運(yùn)行區(qū)分調(diào)試/生產(chǎn)模式source ~/.zshrc重新加載 Shell 配置讓新加的 PATH 生效npx cross-env PORT5000 node xxx.js跨平臺設(shè)置環(huán)境變量統(tǒng)一 Windows 與其他系統(tǒng)的傳參最后再分享一個(gè)小技巧調(diào)試 JS 項(xiàng)目時(shí)我會(huì)在終端里長期保留兩個(gè)分屏一個(gè)用于跑服務(wù)和看日志一個(gè)用于發(fā)請求和查控制。左邊窗口常用node server.js 21 | tee debug.log啟動(dòng)右邊窗口用curl配合jq做接口驗(yàn)證。遇到問題優(yōu)先回到基礎(chǔ) Shell 工具去排查——環(huán)境變量、退出碼、管道、端口、權(quán)限這五件事想清楚了能解決開發(fā)調(diào)試中絕大多數(shù)“莫名其妙”的現(xiàn)象。我在實(shí)際工作中發(fā)現(xiàn)很多人以為 Shell 是“知道就行”的冷知識直到出問題才意識到它在日常調(diào)試?yán)镉卸嘀匾?。與其等到卡住了再搜索不如早點(diǎn)把管道、重定向、后臺任務(wù)、環(huán)境變量這幾個(gè)核心機(jī)制摸透它們帶來的效率提升是立竿見影的。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
日本伦乱九九九综合| 91久热| 少妇人妻无码| 中文字幕高清20页视频| 国产乱码精品一区二区三区四川| 欧美综合自拍| 蜜屁av| 中文字幕人妻色偷偷久久皮| 99re6久热只有精品6在线直播| 日韩黄片视频试看| 亚洲精品国产无码高清| 天天看天天日天天操| 黑人粗大V S日韩女优视频| 亚洲精品 大香蕉| 国产精品婬乱一级毛片彝族| 欧美一区二区一级岛国大片| 亚州男人天堂| 人妻大香蕉| 欧美日日夜夜| 96久久科窝| 欧美十八禁在线看| 抽插无码高清一区| 色哟哟511老熟女| 大香蕉78| 免费岛国一级片| 蜜桃久久一区二区| 熟女91网站| 91超碰在线观看| 亚洲怡春院| 成人十八禁日韩欧美一二三| 欧美熟妇人体| 台湾佬中文娱乐自偷自拍| 手机看片1025| 天天日夜夜爽| 欧美综合骚| 久久婷婷精品| 久久性爱视频| 国产免费一区二区三区最新不卡| 淫淫总合网| 色色色999| 九九亚洲视频| 校园春色 男人天堂| 国产欧美亚洲精品a第2页| 天天干天天狼在线视频| 日本九九九九| 佐山爱中文字幕| 天堂网 主播 亚洲| 75大香蕉| 亚洲日本天堂| 玖玖资源视频一区二区三区| 97中文综合| 美女诱惑久久| a片 xxxx受爽视频| 久操91视频| 91露脸熟女专区| 色网在线视频观看免费| 青青草天天亲夜夜操网| 久热色情精品| 欧美性综合| 91中出在线| 超碰97中文| 日日干天天干夜夜爽| 免费家庭乱伦视频| 亚洲无码久久久久久久| 欧美日韩色图片| 久久m| 国产精品97超碰| 久久精品国产亚洲av水密被窝| 亚洲色天| 欧美精品1区2区3区| 日韩免费人妻色情网站| 日本A级视频| 97在线视频观看免费| 欧美一级在线观看成人| 91社操逼| 欧美精品另类人妖xxxx| 91丝袜熟女| av橘色网站| 男人天堂东京热| 黄人人操人人操| 综合一区中亚洲国产成人综合精品 | 97欧美综合| 久久精品国产AV一区二区三区| 欧美性巨大╳╳╳╳╳高跟鞋| 婷婷激情五月综合| 色网综合网| 天天夜躁日日躁狠狠2002| 婷婷久久大香蕉| 黄色十八禁网站| 欧美操逼录像国产黄色国产| 精品丝袜无码一区二区三APP| 97国产高清视频在线观看| 天天日日夜夜| 综合亚洲欧美| 国产无马视频| 大香蕉综合| 可乐操在线| 人人操人人uiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii | 男人的天堂2000| 亚洲中文一区二区三区视频| 欧美国产成人在线| 欧美不卡五十路| 婷婷五月成人| 色哟哟av| 欧美黄色片AAAAA| 午夜欧美神马久久久久| 国产内射爽爽大片| 天天综合网1| 91综合在线| 吻戏激情性巴克| 亚洲女优有码无码高清| 欧美日韩中文亚洲v在线综合| 黄色不卡视频| 欧美一区二区三区互相| 一区麻豆 高清中文字幕| 欧美亚州综合网图片| 1769精品一区二区三区| 丝袜美腿91| 色爱三区| 欧美激情亚洲| 精品v1区| AV一区观看| Av色五月| 人人么人人操| 日日夜夜国产综合| 91狼人| 97国产精品久久久久 | 亚洲视频小说| 久久久久免费看少妇A片特黄| 亚洲一区二区三区久久 亚洲一区二区| 啊啊啊啊好疼视频| 日韩另类| 久久精品国产亚洲5555| 婷婷色香| 亚洲中文字幕久久人妻| 九九av| 国产精品久久久久亚洲av| 日韩精品人妻中文字有码在线| 成 人片 黄色大片| 校园春色亚洲无码| 99精品在线观看| 欧美 亚洲 在线| 精品国产乱码久久久久久影片| 大香蕉伊人75| 91日日| 国产乱伦亚洲| 这里只有精品97| 色av中文字| 99e久久国产精品| 国产一区二区久久| 亚洲综合性网址| 亚洲AV操| 中文字幕天堂在线| 国产中文字幕在线| 久久婷婷在线观看视频| 91快色色色色色| 欧美激情在线观看视频| 人人澡人人干| 日韩激情视频| 亚洲色诱惑| 1000午夜黄色| 国产精品久久久久久亚洲色欲| 五月丁香激情综合| 国产高清成人传媒影视| 五月丁香综合激情| 国产欧美日本亚洲精品| 日产成人久久| 亚洲国产精品无石码久久| 久久久久久久久一区二区三区| 九色97| 先锋影音av先锋一区| 粉嫩AV一区夜夜嗨| 五月婷婷六月激情| 肏逼视频日本| 欧美三级偷拍| 人妻酒店出差被中出免费在线播放| 大香蕉专区| 九九九九久久久久| 九九九九九九九九九国产精品 | 丁香婷婷啪啪| 欧美性爱中文字幕无线码| 麻豆精品.欧美精品.日韩精品.| 嗯嗯啊啊好疼| 亚洲91av| 欧美1727免费观看视频| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 青青草成人视频在线观看二区| 午夜男人一级A片7777| 久久久精品91八戒| 夫妻天天操岛国视频| 亚洲999综合| 一区黄二区黄| 欧美躁死她一区二区| 青椒国产97在线熟女| 国产 日韩 另类 视频一区爱| 国产熟女无套内射| 99热这里只有精品1| 欧美天堂日韩三级国产传媒| 日本天天吊| 国产亚州日韩欧美看片| 九月丁香综合网| 眼镜人妻101.com| JIZZJIZZ亚洲女人被躁| 丰满人妻一区二区三区性色| 国产精品ww久久| 九t超碰| 久久久天堂| 色99久草| 91性网| 色香天天| 中文乱码字字幕在线第5页| 男人天堂资源| 四虎国产精品永久在线囯在线| 日韩色香| 91精品无码久久久久久久| 在线视频亚洲无码| 日韩免费中文字幕视频| 国产亚洲色婷婷久久99精品91 - 百度| 亚洲天天更新| 91狠狠| 国产91影院| 91人妻人人澡人人爽人人精品| 人妻色偷色噜| 一区操逼| 99热这里只有精| 激情第四色| 天天操狠狠日夜夜干超碰撸com视频在线观看 | www.国产高潮精品| wwwss在线观看| 天天干天天干天天干| 中文字幕成人| 久久久久国产亚洲一区欧美色图日韩| 天天看人人操屄犊摸阴| 香港久久久| 熟妇熟女一区二区三区| A 在线网址| 日韩乱插| 77国产精品| 亚洲丝袜制服国产91_国语字幕免费观看完整版下载第5集_ | 明星性猛交ⅹxxx乱大交| 国产在线能看的你懂的| 亚洲丁香花色| 69精品人人人人| 久久精品女同亚洲女同13| 这里只有精品97| 91视频精品| 日韩精品中文字幕一| 国产尹人在线视频免费| 香蕉一区二区三区在线视频| 亚州日韩97| 大香蕉日韩| 影音先锋日本一区二区| www.激情| 久久一本大香蕉| 伊人国产AV| 久久国产在线一区二区| 激情综合网五月婷婷五月天| 久操大香蕉手机视频在线看| 日韩欧美中文字| 大香蕉中文网| 欧美视频一区二区在线| 丝袜综合色图| 天天综合-91入口| 日逼视频日本| 天天综合AV| 2017天天透天天通天天擦| 综合五月天| 久久久久久久国产视频| 精品国产99| 亚洲天堂男| 国产一区在线观看无码AV| 婷婷五月天成人网| 物业黑人 AV一区| ,成人免费啪啪视频| 激情综合婷婷| 亚洲国产亚洲天堂| 精品一区二区在线针对华人免费观看这里只有精品免费观看 | 内射中国少妇高清视频免费视频 | 男人兔费天堂| 久久久久久久久久久久色网| 黄片aaaaa一区| 日韩激情视频| 天天影视色香欲综合网小说| 日韩pv中文| 欧美情色亚洲| 另类小说五月天| rivers-china.com| 人人人人插| 亚州综合AⅤ| 秋霞一级鲁丝片A片| 精品久一区免费| 日韩97P| 丁香五月天堂| 国产熟妇 码视频户外直播| 亚码激情| 久久精品一区二区一8| 美女诱惑爱爱| 操逼逼一区视频| 久久综合18p| 17c嫩草51久久91嫩草| 囯产精品一区二区三区线|亚洲人成无码网WWW动漫|国产精品免费一级... | 中文字幕78| 欧美人与动性人交a| 好爽,再快点啊哈嗯嗯嗯嗯| 91少妇| 97色在线观看| 日韩欧美性吧婷婷乱伦大香蕉| 天天流夜夜操| 亚洲 无码 偷拍| 伊人97色天使| 久久中文字幕一区不卡| 加勒比海成人视频网| 精品一区二区人妖| 午夜噜噜噜| 久久婷婷国产一区二区色| 国产嫩草精品A88AV| 人妻天堂综合网| 国产强奸乱伦欧美| 变态另类专区| 国产欧美一区二区| 国产精品无码av嫩草| 一区二区亚州激情久婷婷欧美| 久久男女激情视频网站 | 久久XX| 国产精品噜噜噜日日日| 欧美精品丝袜久久久中文字幕| 人人看黄色视频| 蜜桃视频一区二区三区| 天美麻花大全视频| 日韩亚洲欧美中文字幕| 激情久久日韩精品中文字幕麻豆| 99久久婷婷国产综合精品草原| 老熟女网站| 亚洲永久AV无码精品秋霞| 园内精品自拍视频在线播放| 麻豆成人影音在线| AV色五月天| 激情深爱五月天| 日韩欧美性吧婷婷乱伦大香蕉| 蜜臀99999| 国产成人www免费人成看片| 精品一区二区三区蜜桃| 91美女在线看| 久久啊哟| 无码少妇精品一区二区60岁老人 | 欧美激情视频一区二区三区不卡| 欧美精品91| 综合五月婷婷亚洲一区| 天堂男人网| 欧美大色交| 久久婷婷国产一区二区色| 国产中文大片资源中文字幕| 91天天| 97 国产精品| 欧美亚综合色图| 三级片网站在线播放| 久久性爱视频99| 久久久无码精品人妻二区| 极品粉嫩一区二区| 欧美视频在线第3页| 日韩精品人妻一| 婷婷久久五月综合激情| 日韩精品亚洲一二三| 久9久9精品| 殴美牲| 人妻精品视频一区二区| 欧美黄片免费在线观看视频| 最新亚洲黄色免费电影| 91女色| 久久是精品| 区二区亚洲婷| 啊啊啊好舒服好爽啊啊啊视频| 五月天婷婷小说| 国产色呦呦| 男女激烈网站最新| 欧美自拍偷拍综合图片| 国产在线综合福利网站| 超碰九7| 91观看 国产白丝| 一区超碰一区| 国产超碰欧美| 一本色道久久综合亚洲二区三区| 日韩精品电影| 夜夜嗨一区二区三区三州加勒比 | 日韩乱中文 | 欧美人妻色| 打av高清| 久久曰曰| 青青草久草AV| 九九免费影片| 蜜臀久久99精品久久久久久成人小说 | 啊啊啊好想要| 大肥女高潮bbwbbwhd视频| 男人的天堂免费| 日本韩国五十路六十路七十路老熟女作爱视频网站 | 另类图片五月天| 91网站18+| 啊啊啊水好多| av网站免费线看| 国产乱伦亚洲色图高清无码| 无码最新| 99激情视频| 九九九九久久久| 欧美午夜精品久久久久久3D| 97超碰久| 日本大香蕉综合网| 欧美性爱精品七区| 97视频观看| 黑丝91视频| 久日91在线| 色踪合AV| 国产操逼网站亚洲一级黄色| 国产无码高清操逼视频| 亚洲图片偷拍视频区| 玖玖婷婷五月天| 天天影视网综合少妇| 欧美黄色图片| 蜜臀Av一区二区三区| 成·人免费午夜在线观看| 欧美自拍偷拍综合图片| 人、人、摸,人、人、草| 日韩高潮一区| 无码男人天堂| 色婷婷一区二区三区久久| 国产三级资源在线观看| 人妻AV 中文字幕的| 日日夜夜国产综合| 97碰碰色| 爽极品影院| 久久色人体| 亚洲和欧美裸体美女双飞视频| 国产91丝袜 在线播放| 中文字幕第9页萱萱影音先锋| 久久精品国产亚洲AV高级北京| 六月丁香五月婷婷| 日日夜夜模| 天天伊人| 日韩不卡毛片Av免费高清| 老鸭窝亚洲毛片| 亚洲天天精品| 国产精品亚洲高清在线| 91亚·色| 一二三区精品视频| 色伊人91| 亚洲精品欧洲精品| 国产精品久久久久久久久久久久| 日韩一区二区高清在线观看的| 日韩人妻操B| 嗯嗯啊啊日韩精品| 午夜乱轮操逼视频免费看| 九热视频| 人妻丰满熟妇av无码区蜜桃| 少妇干B| 台湾大香蕉99热| 超碰在线一区二区| 色婷婷久久| 超碰欧美97资源| 91av一区二区在线观看| 天天干天天日天天射黄色| 亚洲做性| 十八禁视频网站| 97网址97| 3d成人精品一区二区| 嗯~啊~快点 死我视频| 啊v在线观看视频| 久久丁香五月天| 插入粉嫩少妇视频| 久久三| 日噜夜夜夜夜夜夜夜夜夜夜爽爽爽爽爽爽爽爽爽爽爽爽 | 国产免a费看黄片在线| 欧美日韩国产中文精品字幕自在自线,| 亚洲干B| 国产精品久久久久综合| 老色鬼成人精品视频下载大在线观看| 干日本人少妇午夜寂寞影院| 欧美色图下一页| 黄色电影在线播放综合网站| 日韩小电影| 五月天色色色| 精品福利| 精品免费国产二区三区| 极品尤物自安慰| daxiangjiao你懂的| 手机在线播放国产福利| 日韩人妻精品| 午夜一区| 超碰九7| 亚洲精品久| a片偷拍视频| 极品久久久久久久久久久久久久| 欧美顶级黄色大片免费| 精品国产99999| 96精品在线| 精品欧美不卡在线播放| 亚洲日韩乱码中文无码蜜桃臀网站| 国产亚洲精品农村妇女| 欧美亚洲清纯| 小草精彩毛片| 插日本熟女视频| 欧美同性恋 的搜索结果 - 91n| 五月丁香综合激情| 国产精品国产亚洲区艳妇糸列| 97精品久久久久久久| 亚洲人妻中文高清| 精品国产AV一区天美传媒| 一二三啪啪专区| 日韩国产欧美伦理在线| 精品无av| 91在线色| 色噜噜婷婷| 综合伊人激情| 老熟女天天操| 91激情网| 91亚洲黑人| ..日韩av毛片精品久久久| 久久久999国产精品| 啊啊啊啊啊操我视频| 伊人影院综合是一个与深夜成人在线| 91美女在线| 1024手机看片欧美日韩| 婷婷五月天_亚洲小说欧美激情另类_精品久久国产字幕 | 国产高清视频无码在线| 亚洲精品国产拍免费91在线| 午夜毛片高清免费不卡| 精品国产少妇高潮视频| 一级特级aaaa毛片免费观看| 在线日韩精品一区二区三区| 农村少妇久久久久久久| 另类视频在线| 欧美综合加勒比在线| 综合色色网| 人人操人人插人人摸人人干| 久久久久久9| 久草毛片| 91亚洲丝袜| 欧美人妻色| 欧美人妻精品| 99综合视频一体| 国产 无码 一区二区| 欧美一级AAAAAAA| 综合久久2017| 色97欧美| 久久日韩肥臀| 欧美久久人体| 亚洲一二三四区在线免费看视频| 亚洲91网。| 蜜臀久久99精品久久久久久久久| 久久婷婷伊人| 综合自拍| 91free福利| 黄片免费看黄片免费看| 日韩国产不卡在线视频| 日日插夜夜| 91大神精品长腿在线观看网站| 久久久96| 91精品91久久久久77777俄罗斯老妇姓x| 日韩欧美中文字亚洲慕| 欧美综合传媒| 骚日日av| 国产91美女视频| 色婷婷日韩精品一区二区三区| 自拍亚洲综合| 欧美丝袜美女电影一二三四区| 中 文字幕一区二区三四 五 区日 日 骚| 久热99| 狼人狠干| 青草视频人妻在线观看| 亚洲天堂少妇| 久久久性| 色色色欧美| 亚洲成人性爱网站在线播放| 久久久蜜桃一区二区三区| 一区中文字幕二区日韩| 91色欧美| 欧美92| 美女好片色日本| 婷婷丁香人妻 | 老熟女91av| 伊人色综合超碰| 九一综合精品视品av| 欧美色图私拍91| 日本99一区二区| 动漫av中文| 人人澡人人澡人人| 亚洲人妻久久| 日本黄色大片一级视频免费麻豆| 强歼乱伦资源网| 综合色图区| 亚洲 欧美 中文 日韩超碰| 亚洲国产剧情少妇激情| AV中文字幕剧情1区2区3| 33044男人的天堂深夜备| 亚洲成人ab| 色婷婷六月丁香七月婷婷| wwwxxx日本爽| 国产精品青草综合久久| 久久不卡一区二区| 很狠操| 久久少妇| 中文字幕中文字幕一区二区| 九月色婷婷| 欧洲亚洲人妻无码中字久久三区四区| 欧美一区二区三熟女剧情| 97伊人网| 成人免费福利在线观看| 九九热免费国产视频婷婷伊人五月| 密臀AV在线| 日韩精品一区二区人人人| 国产又猛又粗又爽又黄| 伊人久久艹| 久久一二三四不卡| 亚州一区二区| 久久精品国产亚洲AV成人直播| 97精品国产97久久久| 色老久久| 久久黄片国产一区二区| 91狠狠色丁香婷婷综合久久精品| 神马午夜久久久| 欧美综合第一页| a级成人毛片免费视频高清| 99久久这里只有精品| 大香蕉日亚洲日本亚大| 中文字幕一区二区日韩网| 大奶啊啊好爽| 夜夜骑日日| 99re公开精品免费视频| 99热精品青草在线 | 久久,精品一二三| 亚洲加勒比色图| 久思思热视频在线观看| 日本三级小说中文字幕| 丰满人妻一区二区三区免费 | 亚洲国产综合久久久性感熟妇| 天天干夜夜操一区二区| 奇米狠999| 四虎884a| 国产美女销魂在线观看不卡| 伊人97色天使| 操一操摸一摸| 99999精品视频| 天美传媒AV在线播放| 国产67194| 一区二区无码视频| 国产成人精品亚洲日本| 国产蜜臀在线| 亚洲精品日韩国产欧美| 免费97视频| 十八禁的黄污污免费网站| 欧美97视频| 欧美国产欧美在线观看| 超碰天天操| 自拍视频一区在线观看| 偷拍五区| 蜜臀AV网站| 国产97/欧美| 久草婷婷| 亚洲综合第一页| 2025亚洲男人天堂| 人人操人人操人人人操| 嗯~啊~快点 死我视频| 亚洲一卡二卡在线免费| 久操九九九九九九九九九九九九九九九九九九九九九九九九九九九九 | 少妇久久久久久久久| 天天日天天爽| 成人国产视频在线观看| 亚洲成人精品久久久| 不卡中文字幕aⅴ在线| 国产精品久久久777| 亚洲中文一区二区三区| 人妻蜜桃臀| 五月天开心网| 亚洲国产成人精品999| 69久久久久久久久久久久久| 爱做久久久久久| 久草新在线| 欧美精品偷拍| 欧美日韩操逼嗦吊| 日韩97| 人妻少妇精品久久久| 日韩欧美经典在线观看| 久久久久九九九| 日本大香蕉| 久久婷色| 日韩高清黄片| 啊啊啊啊无码| 亚洲自拍一区夜夜操| 日本在线激情一区二区三区| 亚洲无线观看久久| 亚洲天天精品| 欧美久久婷| 丁香六月东京热| 狠狠91| 青操影院| 亚洲男人的天堂一区二区| 操高情无码| 黑人综合网| 欧美激色| 91精品人妻一区二区-全集完整版免费正片国语-B02AV | 操人妻少妇中文 | 欧美中字不卡| 搡老女人老妇女老妇老熟女怎么读| 国产精品一区二区校花| 精品人妻一区二区三区在线视频不卡| 日韩精品作爱导航| 97天天爽| 色五月婷婷久久| 在线观看成人性爱免费小视频| 天美传媒AV在线| 日韩久草| 久久国产对白激情浪潮 | 欧美久久人妻少妇一区二区| 嗯啊不要在线| 久久香蕉国产线看观看猫咪av| 黄色成人网久久久久久| 亚洲高清色综合| 免费99精品国产自在在线| 校园春色综合色| 亚洲少妇喷视频看| 欧美一区二区亚洲天堂| 激情国产乱伦Av| 天天看精品动漫视频一区| 欧美亚洲系列| 久草色在线观看| 久久原创中文| 国产精品久久久久久久久久久久久久久久| 日韩美女久久一区二区三区| 日本狠狠干| 牛黄色久午久| 抽插无码高清一区| 天天色综亚洲91污| 日韩乱中文 | 亚洲日韩黑丝| 久久久久人| 色偷综合| 日日妻色网| 97bbn| 韩国国产欧美情侣视频在线| 啊啊啊啊啊好大好舒服想要| 内射黑人| 亚洲欧美日产国产91毛片| 久久最新视频免费观看| 一区二区三区四区久久视1| 熟妇视频一区二区三区在线观看| 天天综合日韩网| 2020中文字幕| 在线观看十八禁| 久久久久国产亚洲一区欧美色图日韩| 99国内精品| 精品无吗久久| surenchaopeng| 亚洲AV不卡在线观看尤物| 亚州高清色综合| 蜜臀无码一区二区| 久久激情视频| 伊人九九九| 欧美一级A一级a爱片久久| 3PAV乱伦视频| 一级日本牲交大片好爽在线看| 欧美一区二区福利在线| 国产亚洲美日韩Aⅴ中文字幕无码成人| 亚洲小电影免费涩涩成人在线高清| 又大又长又粗又爽又黄| 日本一区二区不卡精品| 丁香五月影院| 中文一区二区婷婷视频| 躁躁日曰躁2020| 热热色色综合| 夜夜欧美| 亚洲视频1区| 国产吞精a级片激情电影| 久草婷婷| 青娱乐大香蕉| 精品十八在线观看| 久久久96| 国产不卡免费在线视频| 日日夜夜狠狠| 欧美白嫩女HD| 久久亚洲欧美一区二区三区-亚洲国产精品第一区二区 | 97超碰天天爱天天爱| 中文字幕乱偷人妻久久艾草网| 蜜桃午夜视频一区二区| 日本成a人v网站在线观看| 亚洲自拍天堂| 国产超碰在线| 香蕉久久精品| 青青草综合在线| 午夜福利1区2区3区| 精品国产人成在线| 色蜜AV| 欧美日韩天堂| 男人天堂东京热| 操逼大黄片| 色婷婷综合网| 91路www| 一起草高清无码| 色欲日韩欧美在线一区| 久久综合18p| 国产中午字一暮区| 性爱综合一区二区| 涩涩五月天| 热热色色综合| 老司机午夜精品视频| 亚洲欧美中文日韩视频中国语| 午夜精品99久久久久传媒| 蜜桃精品一区二区三区久在线| 中欧人妻丝袜中文字幕| 333kkkk·亚洲com久久| 国产福利夜| 97精品在线视频| 国产av美女被艹的乱叫| 91网亚洲| 亚洲成a人v欧美综合天堂下载| 一区三区啪啪| 制服中出中文人人精品| 秋霞午夜成人福利片片| 丁香六月婷婷| 亚洲情色 无码专区| 一区不卡在线观看av| 日韩亚洲美女一区久久| 4tube欧美女厕所| 亚洲欧洲精品视频发布| 亚洲自拍另类丝袜综合| 免费AV中文网在线观看| 成人看片网站| 黑人性欧美| 熟妇操花| 人人摸人人舔一区二区| 隔壁邻居波多野结衣中文字幕| 99re6国产精品99re在线| 欧美色图综合网| 色色婷| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 插欧洲美女欧美精品| 嫩草 我啊~嗯~在线| 97精品熟女少妇一区| 久久久熟妇熟女国产| 乱伦一二三区| 99re在线观看| 午夜亚洲国产理论秋霞| 超碰夫妻97| 狠狠中文字幕| 久久久久久久久国产| 日本五十路熟女一区二区| 人妻人妻天天碰| 国产精品嫩草影院免费| 91影视亚洲| 无码国产精品久久久久| 极品出轨视频网站| 狠狠五月天| 91肉丝| 另类av天堂| 久操网视频| 亚洲,欧美,综合网| 九九热精品| 天天干人人看综合| 四虎免费看黄| 熟女字幕| 97欧美日韩| 91亚州欧美| 国产精品无码av| 久久久青草青青国产亚洲免观精品高清完整版_97久久综合区小说区图片区,国精品 | 小情侣高清国产在线视频| 综合熟妇一区二区三区| 久久麻豆一区二区| 国产福利电影| 国产风韵犹存熟妇三区| 五月天婷婷久久| 国产精品点击进入在线影院高清| AV丝袜少妇| 日本在线播放不卡一区| 久 久无码人妻AV| 亚洲自拍另类丝袜综合| 中文自拍欧美影视| 亚洲精品97| 亚洲有码第一页| 99热在线播放| 黄片国产精品一区二区| 欧美色交| 亚洲色性情三级| 日本中文字幕在线视频| 私人尤物在线精品不卡| 久久久久久久综合,国产| 激情自拍 校园春色| 上海一级黄片| 97视频在线免费观看| 亚欧美综合网。| 久久久无码国精品无码三区三区| 久久久久亚洲熟妇熟女| 91久热| 日韩钢筋无码高清啾啾啾| 亚洲精品国产精品乱码不99| 国产主播福利| 九t超碰| 九一综合网| 日韩99神马视频播放片在线播放| 午夜偷拍久久熟女| 欧美第一页| 亚洲性综合11| 91黑丝美女| 蜜臀久久一区二区| 国产精品久久久鸭无码的功能| 亚洲无码国产探花在线观看| 97伦综合| 亚洲丝袜99| 精品久久久久黄少妇| 激情五月天婷婷| 一级久久久久久久久久久| 91精品国产91久久福利| 亚洲风情在线观看| 亚洲双插| 青青伊人这里只有精品| av操操不卡| 亚洲日韩一区电影| 五月婷久久| 国产精品香蕉热久久新品| 国产Av超碰| 囯产精品久久久久久久久久梁医生 | 亚洲图片色图欧美另类 | 久婷婷一区| 久久久9品一区二区三区| 丁香五月天堂网| 亚洲国产欧美中日韩成人综合视频| 国产乱色国产精品免费视| 亚洲97| 欧美一级A片不卡视频。| 翔田千里A片一区二区| 人人妻人人爽一区二区三区| 色欧美色交综合| 91在线丝袜| 东北操逼| 十八禁电影伊人网| 欧美高潮| 无码人妻毛片丰满熟妇精品区| 中文字幕第23区| 伦在线97| 国产欧美后入| 亚欧洲一区二区视频| 亚洲综合射| 色五月激情AV在线| WWW美腿丝袜香蕉中文| 99热国产精品| 人妻天天爽夜夜爽2| 亚洲欧美天| 中文字幕视频二区| 欧美姓爱综合网| 丰满人妻一区二区三区| 亚洲毛片基地专区| 国产成人在线观看网址| 自拍偷拍草一草| 精品国产91av一区二区三区| 久草国产在线视频| 日韩丝袜二区| 成功精品影院| 日韩一999精品| 99RE在线视频精品,这里只有精品| 爽爽爽免费视频| 中文字幕诱惑制服人妻丝袜美丝袜美| 亚洲s色图| 精人妻一区二区三区| 久艹日日日| se吧提供国产乱老熟视频胖女人| 亚洲精品人妻在线| 免费看一级a性色生活片久久无| 成功精品影院| 中文字幕乱碼在线| 久草精品视频| 亚洲 日本 不卡| 亚洲中文字幕精品一区| 懂色中文一区二区三区| 日韩亚洲中文字幕在线| 精品久热| av大香蕉网站| 公司1区2区3区精产精| 日骚逼视频| 免费αV在线视频| 国产亚洲色婷婷久久99精品91葵花宝典| 成视频在线观看免费看| 欧美第一页性| 日韩资源网| 91性感在线| 中文字幕一区二区三区高清| 久久曰曰| 嗯嗯啊好大| 另类小说欧美激情校园春色| 国产成人亚洲精品无码最新在线| 男人高清无码一区二区| 一本道综合色图| 9999亚洲精品| 亚洲色图欧美一区二区不卡| www.久久最新地址| 日本久久久久久久久| 日日干夜夜欢| 中日韩免费看男女操逼大全| 在线v中文字幕一区二区三区| 蜜色网色哟哟| 人妻蜜桃臀| 日韩99精品视频综合区 | 人妻一区二区三区四区视频| 亚洲最新a在线观看| 久久久亚洲精品电影免费看| 色天使AV天堂| 女同女同恋久久级三级| 男人的天堂2010| 久久久91福利姬| 欧美gv在线观看| 五月天激情婷婷| 97av,com| 精品九九国产无码| 亚洲天堂色图| 色综合天天爱去电影网| 中文字幕丝袜国产第一页不卡| 色97| 91亚洲综合在线| 欧美精品久久久久久久久88| 今日头条成人一区二区三区四虎精品| 91丝袜| 99久久网站| 夜夜青青无码影院| 变态乱伦伪娘灌肠一区二区| 一二三啪啪专区| 日韩无限资源| 婷婷色综合| 久区视频| 国产乱伦性爱AV| 亚洲日本天堂| 狠狠色狠狠色狠狠五月| 夜夜操av亚洲一区二区| 青青草毛片| 欧美男人一区| 久久精品国产亚洲av水密被窝| 午夜男人一级A片7777| 大屁股熟女一区二区三区| 精品人妻一区二区视频| 东北女人被操| 99久久久无码精品国产人| 蜜臀人妻少妇久久在线观看| 2021国产成人精品久久| 旡码电影特区| 17c嫩草51久久91嫩草| 日本美女性生活久久久久久久| 91精品国产一区三一| 欧美综合站| 91视频综合网| 久操高青| 韩日色费| 中文字幕精品乱码| 中文字幕中文字幕一区二区| 麻豆精品三区视频| 天天做日日做天天欢。| 欧美在线|亚洲| 日韩在线观看中文字幕视频| 欧美色图亚洲色,麻豆| 国产毛片精品一区二区色欲黄A片| 黄色成年| 97超级久久强资源| 男插女青青影院| 精品久久大胆人体| 强奸乱伦资源| 国产免费小视频| 99热超碰| 日本一区视频在线观看| 欧美玖玖爱免费玖玖| 久久精品国产72国产精品福利| 少妇色欲综合网2| 91xingse| 欧美日日操| 激情视频图片| 极品色社| 91精品微拍福利| 九九免费影片| 极品色社| 91精品国产日韩欧美综合| 欧美日韩精品青青| 不卡在线一区,精品一区二区三区中| 欧美乱伦专区| 土豪酒店各种姿势玩弄极品幼稚| 91啪啪视频| 黄色成人网久久久久久| 东北操逼| 麻豆精品久久久久久久| 又大又长又粗又爽又黄| 久久久久女教师免费一区| 青青国产精品在线| oumeisetu综合| 日韩综合无码色欲vv| 97中文综合| 五月天伊人| 久久精品色欧美aⅴ一区二区| 色五月AV| 精品一二三区女同 | 校园春色 亚洲| 91在线免费观看处女| 日韩人妻中文视频| 欧美色狠| 人妻少妇久久| 91在线限制级| 性爱综合网| 亚洲中文一区二区三区| 亚洲天天更新| 午夜精品久久久久久久| 污到发麻的视频 国产| 日韩国产中文字幕| 成人无码在线超碰网| 性欧美999| a片亚洲一本通视频| 亚洲无套久久嗯嗯| av婷婷色婷婷色六月| 白丝被操91| 人妻丝袜一区二区三区在线| 久久99草| 九一综合精品视品av| www五月| 黄色网址在线免费观看| 无码人妻精品一区二区三区99不卡| 人妻蜜桃臀| 亚洲自拍欧美色综合| wwe 天天干.com| 69精品少妇一区二区三区蜜桃| 伦理片秋霞免费影院| 18禁中文字幕| 秋霞免费无码视频日韩A片| 精品熟女呻吟久久91| 亚洲狠狠入| 热热色综合网| 日韩 欧美 国产 麻豆| 啊啊啊啊啊好大好舒服想要| 在线观看AV不卡| 久久性爱视频| 综合色啪| 日本一级性爱| 一级啊性爱在线视频| 干日本人少妇午夜寂寞影院| 成人性爱AV在线免费观看| 97在线视频观看| 亚洲97在线| 九九九一二三| 肥佬影院91| 中文字幕乱妇免费视频| 33044男人的天堂深夜备| 亚洲。天堂。日本在线观看| 九九国产| 日产123区精品免费观看| 动漫av中文| 道久久五香丁月婷婷激情综合| 极品粉嫩少妇视频| 色五月第四色| 天天影视射综合网| 欧美 日韩 婷婷 五月| 欧美97视频| 97超碰超欧美。| 激情婷婷丁香| 亚洲乱熟女一区二区| 黑丝制服中文字幕| 男人的天堂com| 欧美综合另类| 亚洲欧美一区二区网址| heyZO天然素人无码AⅤ专区| 日本十八禁免费看污网站| 日韩图区 偷拍| 国产1769在线|