99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

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

Mac 下 Node.js 多版本管理:nvm 安裝、切換與踩坑指南

Mac 下 Node.js 多版本管理:nvm 安裝、切換與踩坑指南 如果你常年在 Mac 上寫 Node.js大概率遇到過(guò)這種局面老項(xiàng)目還沒(méi)遷完新項(xiàng)目又要求 Node 20 起步而你的電腦里只有一個(gè)當(dāng)初從官網(wǎng)下載的 Node.js。要么先卸再裝要么手動(dòng)改 PATH折騰一圈后環(huán)境反而更亂。這篇內(nèi)容圍繞 Mac 開(kāi)發(fā)環(huán)境搭建過(guò)程中的 Node.js 安裝和多版本切換展開(kāi)會(huì)從零走一遍完整鏈路覆蓋多版本管理器選型、nvm 安裝、日常切換操作、項(xiàng)目級(jí)版本鎖定以及幾個(gè)我真實(shí)踩過(guò)的排坑過(guò)程。適合剛接觸 Node.js 的前端新手也適合被版本沖突折磨過(guò)、想一次性理清環(huán)境的老手。1. 單版本 Node.js 撐不住多項(xiàng)目并行的真正原因1.1 不是“高版本兼容低版本”這么簡(jiǎn)單很多人第一次接觸 Node.js 時(shí)以為版本越高越好裝個(gè)最新的 LTS 就萬(wàn)事大吉。實(shí)際進(jìn)入多項(xiàng)目開(kāi)發(fā)后這個(gè)假設(shè)很快被打破。Node.js 每個(gè)大版本都有明確的 ABIApplication Binary Interface變化。原生模塊在編譯時(shí)會(huì)綁定當(dāng)前 Node 版本對(duì)應(yīng)的 ABI 版本號(hào)例如 node-sass、bcrypt、sharp 這類帶 C 擴(kuò)展的包一旦換了 Node 版本基本都要重新編譯嚴(yán)重一點(diǎn)直接拿不到對(duì)應(yīng)二進(jìn)制安裝當(dāng)場(chǎng)報(bào)錯(cuò)。老一輩前端項(xiàng)目里常見(jiàn)的node-sass就是典型例子它依賴的 libsass 與 Node 版本強(qiáng)綁定Node 升級(jí)后項(xiàng)目可能直接起不來(lái)。除了原生模塊npm 生態(tài)的依賴解析行為也會(huì)隨版本變化。npm 6 和 npm 8、9 之間對(duì) lockfile 的處理邏輯、對(duì)某些依賴樹(shù)的解析結(jié)果都不完全一致。你在 package-lock.json 里鎖住的依賴可能在新版本 npm 下被“善意地”重新解析結(jié)果平臺(tái)相關(guān)依賴的版本就變了。所以“高版本 Node 一定兼容低版本依賴”是一個(gè)很危險(xiǎn)的默認(rèn)假設(shè)。也就是說(shuō)Node 版本不只是運(yùn)行時(shí)版本它本質(zhì)上是一個(gè)項(xiàng)目的隱性環(huán)境契約。老項(xiàng)目基于舊 ABI 編譯新項(xiàng)目依賴新語(yǔ)法和新 API想用一套 Node 通吃時(shí)間越長(zhǎng)越吃力。1.2 官網(wǎng) pkg 安裝方案的幾條死穴官網(wǎng)的安裝路徑是打開(kāi) nodejs.org下載對(duì)應(yīng)平臺(tái)的 .pkg 安裝包雙擊、一路繼續(xù)。這個(gè)流程本身沒(méi)什么問(wèn)題適合剛接觸開(kāi)發(fā)、只打算用一個(gè) Node 版本的人。但它對(duì)多版本場(chǎng)景極不友好。用 pkg 安裝后Node 可執(zhí)行文件會(huì)被放到/usr/local/bin/nodenpm 則放在/usr/local/bin/npm全局模塊安裝在/usr/local/lib/node_modules。這套結(jié)構(gòu)是“單版本獨(dú)占”的。當(dāng)你需要從 Node 18 切到 Node 20最原始的辦法就是先卸載 18 再裝 20。卸載時(shí)還卸不干凈/usr/local/bin里的符號(hào)鏈接、/usr/local/lib/node_modules里的殘留目錄都可能把新版本環(huán)境搞混。我也見(jiàn)過(guò)有人用“改 PATH”的方式做多版本下載兩個(gè)版本的壓縮包解壓到不同目錄切換時(shí)改一下export PATH/path/to/node-v20/bin:$PATH。這在單個(gè)終端窗口內(nèi)有效但換個(gè)窗口就失效而且全局依賴混亂的問(wèn)題依然存在。項(xiàng)目一多靠手動(dòng)管理 PATH 基本等于給自己埋雷。1.3 Docker 和 npx 是補(bǔ)丁不是解決方案可能有人會(huì)問(wèn)那我用 Docker 跑不同 Node 版本總可以吧可以但代價(jià)不低。Docker 容器環(huán)境確實(shí)干凈可每次進(jìn)容器都要掛載代碼目錄、裝依賴、暴露端口日常啟動(dòng)一次 dev server 要等好幾秒調(diào)試體驗(yàn)比本地直接跑差不少。對(duì)團(tuán)隊(duì) CI 來(lái)說(shuō) Docker 是剛需對(duì)個(gè)人日常開(kāi)發(fā)來(lái)說(shuō)它的全部?jī)r(jià)值只是“隔離”而隔離這件事一個(gè)多版本管理器就能做到。npx 也常被拿來(lái)?yè)跻幌?。npx可以臨時(shí)執(zhí)行某個(gè) npm 包而不安裝到全局但它解決的是“某個(gè)包想跑但不想裝”的問(wèn)題改變不了當(dāng)前 shell 里的 Node 版本。你的項(xiàng)目依賴原生模塊時(shí)node-gyp 實(shí)際調(diào)用的還是 PATH 里那個(gè) Node。npx 不是版本管理器它夠不到那個(gè)層面。2. 多版本管理器的核心原理與選型對(duì)比2.1 版本切換的本質(zhì)是 PATH 順序在所有多版本管理器里“切換版本”這個(gè)動(dòng)作本質(zhì)上都是在改 PATH 順序。在類 Unix 系統(tǒng)里shell 執(zhí)行node命令時(shí)會(huì)按照 PATH 環(huán)境變量里冒號(hào)分隔的目錄順序從頭到尾查找名為node的可執(zhí)行文件找到第一個(gè)就執(zhí)行。PATH 排在最前面的那個(gè)目錄決定了當(dāng)前終端里node到底是誰(shuí)。多版本管理器要做的就是當(dāng)你執(zhí)行nvm use 20時(shí)把 Node 20 所在的 bin 目錄插到 PATH 最前面同時(shí)把其他版本的 bin 目錄撤掉。我習(xí)慣用外賣平臺(tái)來(lái)類比PATH 就像外賣 App 里的默認(rèn)店鋪排序排在最前面的餐廳擁有優(yōu)先接單權(quán)。多版本管理器相當(dāng)于根據(jù)你選的項(xiàng)目在每次啟動(dòng)終端時(shí)“把你想用的那家店頂?shù)降谝弧?。理解了這個(gè)后面看任何工具的報(bào)錯(cuò)和配置思路都會(huì)清晰很多。2.2 nvm最老牌也最不容易出錯(cuò)nvm 是 Node Version Manager 的縮寫基于 shell 腳本實(shí)現(xiàn)。它在~/.nvm/versions/node目錄下給每個(gè) Node 版本單獨(dú)建一套完整運(yùn)行時(shí)包括各自的 node、npm、全局依賴目錄。它們彼此物理隔離不存在“全局包互相覆蓋”的問(wèn)題。nvm 的優(yōu)勢(shì)主要體現(xiàn)在兩點(diǎn)生態(tài)成熟。它出現(xiàn)得早幾乎所有 Node 多版本相關(guān)的報(bào)錯(cuò)在 GitHub Issues、Stack Overflow 或社區(qū)博客里都能找到現(xiàn)成解決方案。對(duì)新手來(lái)說(shuō)“搜得到答案”是最大的隱性價(jià)值。配置直觀。nvm 的命令行設(shè)計(jì)簡(jiǎn)潔install、use、alias這幾個(gè)動(dòng)詞幾乎不用記。和.nvmrc的配合也足夠自然項(xiàng)目根目錄放一個(gè)版本文件團(tuán)隊(duì)協(xié)作時(shí)基本無(wú)感。它的缺點(diǎn)是每次新開(kāi)終端都要執(zhí)行一遍nvm.sh在目錄深、環(huán)境變量多的時(shí)候會(huì)有肉眼可感知的啟動(dòng)延遲。另外nvm ls-remote這種需要請(qǐng)求遠(yuǎn)程版本列表的操作在網(wǎng)絡(luò)不理想時(shí)確實(shí)比較慢。但這些屬于“可忍受的小毛病”不影響它作為默認(rèn)首選的定位。2.3 fnm、asdf、nodenv 怎么選我也試過(guò)其他工具簡(jiǎn)單說(shuō)說(shuō)對(duì)比方便你做決定。工具實(shí)現(xiàn)方式核心特點(diǎn)更適合誰(shuí)nvmshell 腳本生態(tài)最大、資料多、命令直觀大多數(shù)人和團(tuán)隊(duì)協(xié)作場(chǎng)景fnmRust 二進(jìn)制啟動(dòng)快、切換快、自帶 .nvmrc 自動(dòng)切換對(duì)終端啟動(dòng)速度敏感的人asdf多語(yǔ)言版本管理不只管 Node還能管 Python、Ruby、Go 等已經(jīng)用 asdf 管多語(yǔ)言的人nodenvshim 機(jī)制思路類似 rbenv輕量、侵入性低但更新節(jié)奏偏慢喜歡極簡(jiǎn)工具鏈的玩家fnm 我實(shí)際用過(guò)一段時(shí)間它的速度確實(shí)比 nvm 快而且進(jìn)入目錄自動(dòng)讀取.nvmrc的體驗(yàn)很好。但當(dāng)時(shí)我在遷移舊項(xiàng)目時(shí)遇到過(guò)一次 shim 與全局包路徑對(duì)不上的情況排查成本比 nvm 高不少。對(duì)于“求穩(wěn)”的個(gè)人開(kāi)發(fā)環(huán)境我還是回到了 nvm。asdf 屬于另一條路線它會(huì)接管你機(jī)器上的多種運(yùn)行時(shí)版本。如果你已經(jīng)用 asdf 統(tǒng)一管理 Python、Ruby、Go那 Node 也交給它完全合理。反過(guò)來(lái)如果只為了 Node 一個(gè)運(yùn)行時(shí)引入 asdf那就有點(diǎn)大炮打蚊子插件、shims、環(huán)境變量都要處理學(xué)習(xí)成本不低。nodenv 的特點(diǎn)是輕采用類似 rbenv 的 shim 方式攔截命令。但它的社區(qū)規(guī)模和更新頻率明顯不如 nvm遇到新版本 Node 發(fā)布后的適配問(wèn)題響應(yīng)會(huì)慢一些。我的建議是不要為了“小眾顯得高級(jí)”選擇它。3. 安裝 nvm 之前先檢查這三樣?xùn)|西3.1 shell 類型和配置文件的落點(diǎn)很多人在安裝階段就卡住不是因?yàn)槊钋缅e(cuò)而是因?yàn)閴焊鶝](méi)搞清楚自己的 shell 是什么。macOS 從 Catalina 開(kāi)始默認(rèn)使用 zsh。但如果你之前手動(dòng)切換過(guò) shell或者用了某些終端工具實(shí)際生效的可能是 bash、fish 甚至其他 shell。安裝 nvm 之前先執(zhí)行echo $SHELL如果輸出/bin/zsh那配置文件就是~/.zshrc如果是/bin/bash則看~/.bash_profile或~/.bashrc。nvm 安裝腳本會(huì)在你的 shell 配置文件里追加一段初始化代碼如果它追加到了.zshrc而你的終端實(shí)際加載的是.bash_profile那重新打開(kāi)終端后nvm命令自然不存在。我第一次裝 nvm 時(shí)就犯過(guò)這個(gè)錯(cuò)明明顯示安裝成功nvm卻提示 command not found后來(lái)才發(fā)現(xiàn)自己當(dāng)時(shí)默認(rèn) shell 還是 bash而配置文件寫到了.zshrc。這個(gè)檢查花不了十秒鐘但能幫你在源頭上避開(kāi)一個(gè)很常見(jiàn)的坑。3.2 Xcode Command Line Tools 缺失的連鎖反應(yīng)安裝 Node 本身不一定需要 Xcode但項(xiàng)目依賴?yán)镏灰K就需要編譯器工具鏈。macOS 上負(fù)責(zé)這件事的是 Xcode Command Line Tools它提供 clang 編譯器、SDK 頭文件、make 工具等。驗(yàn)證是否已安裝執(zhí)行xcode-select -p如果輸出/Library/Developer/CommandLineTools說(shuō)明已經(jīng)裝好了。如果提示xcode-select: error則需要先安裝xcode-select --install這個(gè)過(guò)程會(huì)彈窗等它下載完成即可。很多人裝完 Node、執(zhí)行npm install時(shí)遇到gyp: No Xcode or CLT version detected或者python not found根因往往就是這一層沒(méi)準(zhǔn)備好而不是 Node 本身的問(wèn)題。3.3 Homebrew 不一定非要先裝網(wǎng)上很多教程會(huì)把 Homebrew 和 Node 安裝綁在一起寫給你一種“必須先裝 Homebrew 才能裝 Node”的錯(cuò)覺(jué)。其實(shí)不是。nvm 官方安裝腳本只用 curl 和 bash完全不需要 Homebrew 參與。Homebrew 適不適合裝取決于你還要用終端管理多少其他軟件。如果之后要裝 Git、MySQL、Redis、FFmpeg 這類工具那 Homebrew 是 macOS 上最高效的入口。但如果你當(dāng)前只需要 Node 和 npm完全可以跳過(guò) Homebrew直接進(jìn)入 nvm 安裝環(huán)節(jié)少一個(gè)變量也少一層可能的沖突。不過(guò)我也理解很多人還是會(huì)先折騰 Homebrew尤其是看到“mac 安裝 homebrew 失敗”這類問(wèn)題時(shí)容易手足無(wú)措。根據(jù)我見(jiàn)過(guò)的情況Homebrew 安裝失敗通常集中在幾個(gè)原因Xcode Command Line Tools 沒(méi)裝或者版本異常對(duì)/opt/homebrewApple Silicon或/usr/localIntel目錄沒(méi)有寫權(quán)限官方安裝腳本從 GitHub 拉取時(shí)網(wǎng)絡(luò)鏈路中斷curl 報(bào)連接錯(cuò)誤或 SSL 校驗(yàn)錯(cuò)誤之前裝過(guò)一半目錄殘留導(dǎo)致校驗(yàn)失敗。遇到這類問(wèn)題不要一上來(lái)就重復(fù)跑安裝腳本。先確認(rèn)前兩個(gè)基礎(chǔ)條件再看網(wǎng)絡(luò)錯(cuò)誤是臨時(shí)斷流還是持續(xù)性失敗。如果腳本下載到一半斷開(kāi)先解決網(wǎng)絡(luò)鏈路再重試不然盲跑十次的結(jié)果大概率還是失敗。3.4 官網(wǎng) pkg 與 Homebrew 的取舍如果不想用任何版本管理器官網(wǎng) pkg 是最簡(jiǎn)單的方式雙擊安裝即可。但你要接受“后續(xù)升級(jí)和切換版本都麻煩”的后果。Homebrew 安裝 Node 則有兩種方式。一種是把node公式作為獨(dú)立軟件安裝另一種是后續(xù)再疊加nvm。前者本質(zhì)還是單版本方案如果有多個(gè) Node 版本需求依然繞不開(kāi)手動(dòng) link。后者則要小心兩個(gè)來(lái)源的 PATH 互頂。所以在多版本這個(gè)前提下最干凈的路子是直接上 nvmHomebrew 只用來(lái)裝其他開(kāi)發(fā)依賴。4. nvm 安裝與日常切換操作全記錄4.1 使用官方腳本安裝 nvm確認(rèn)好 shell 類型和系統(tǒng)基礎(chǔ)環(huán)境之后開(kāi)始安裝 nvm。官方給出的安裝命令是curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash這個(gè)命令做了兩件事curl -o-把安裝腳本內(nèi)容打印到標(biāo)準(zhǔn)輸出管道符把它交給 bash 執(zhí)行。腳本會(huì)克隆 nvm 源碼到~/.nvm然后自動(dòng)識(shí)別你的 shell 配置文件并追加一段 nvm 初始化代碼。安裝完成后新開(kāi)一個(gè)終端窗口或者手動(dòng)執(zhí)行source ~/.zshrc然后用下面命令確認(rèn)安裝成功command -v nvm如果輸出nvm說(shuō)明命令已經(jīng)可見(jiàn)。這一步通關(guān)后Node 的多版本管理就算邁過(guò)了一大半。補(bǔ)充一句如果你確實(shí)只想用 Homebrew 裝 nvm也可以執(zhí)行brew install nvm。但結(jié)束后需要手動(dòng)創(chuàng)建~/.nvm目錄并在 shell 配置里手動(dòng)寫初始化代碼。相比官方腳本的“全自動(dòng)”這屬于給自己加戲不建議新手這么干。4.2 安裝多個(gè) Node 版本并確認(rèn)目錄隔離nvm 安裝好后先看看遠(yuǎn)端有哪些版本可以裝nvm ls-remote這個(gè)命令輸出很長(zhǎng)因?yàn)?Node 版本非常多。你不需要看全部記住幾個(gè)常用安裝方式就夠了。命令效果適用場(chǎng)景nvm install --lts安裝當(dāng)前最新 LTS 版本大多數(shù)人日常開(kāi)發(fā)nvm install 20安裝 Node 20 系列最新版本明確需要 Node 20nvm install 18.20.4安裝某個(gè)精確版本項(xiàng)目鎖定了具體版本號(hào)nvm install 16安裝 Node 16 系列最新版本維護(hù)老項(xiàng)目注意nvm install 20和nvm install 20.18.1的區(qū)別。前者表示“我要 Node 20 大版本下當(dāng)前最新 patch”后者表示“我就要這個(gè)具體版本”。日常開(kāi)發(fā)中大版本維度足夠僅在需要復(fù)現(xiàn)特定問(wèn)題時(shí)才裝精確版本。多裝幾個(gè)版本后可以看本地已有列表nvm ls正常輸出會(huì)列出所有已安裝版本并標(biāo)注當(dāng)前正在使用的版本。它們的安裝目錄都在~/.nvm/versions/node下面每個(gè)版本一個(gè)獨(dú)立目錄node、npm、全局依賴全部分開(kāi)。你不需要手動(dòng)清理什么nvm 的隔離機(jī)制已經(jīng)把最麻煩的互相污染問(wèn)題解決了。4.3 切換、默認(rèn)版本與臨時(shí)執(zhí)行切換版本的核心命令是nvm use 20執(zhí)行后當(dāng)前終端窗口的 Node 版本就會(huì)切到 Node 20。node -v會(huì)立刻顯示變化。如果你希望以后新開(kāi)的終端默認(rèn)使用某個(gè)版本設(shè)置 default 別名nvm alias default 20這里有個(gè)常見(jiàn)誤解alias default只影響新開(kāi)的終端窗口不會(huì)改變當(dāng)前已經(jīng)打開(kāi)的窗口。設(shè)置完記得新開(kāi)一個(gè)終端再驗(yàn)證。查看當(dāng)前版本可以執(zhí)行nvm current有時(shí)候我只想用某個(gè)版本臨時(shí)跑一個(gè)腳本但又不想切換當(dāng)前終端環(huán)境可以用nvm run 18 --version nvm exec 18 node app.js這兩條命令會(huì)臨時(shí)喚起指定版本執(zhí)行命令但不會(huì)改動(dòng)當(dāng)前 shell 的 PATH。這種“用完即走”的方式在調(diào)試線上 Node 版本問(wèn)題時(shí)特別有用。實(shí)際開(kāi)發(fā)里最常見(jiàn)的操作序列其實(shí)是這樣的老項(xiàng)目根目錄敲nvm use 16新項(xiàng)目根目錄敲nvm use 20兩個(gè)項(xiàng)目互不干擾。只要每個(gè)項(xiàng)目根目錄放好.nvmrc整個(gè)過(guò)程還能進(jìn)一步自動(dòng)化下一節(jié)細(xì)說(shuō)。5. 項(xiàng)目倉(cāng)庫(kù)里的 .nvmrc讓版本切換成為團(tuán)隊(duì)默認(rèn)動(dòng)作5.1 .nvmrc 的文件格式與生成方式.nvmrc不是 Node.js 官方的強(qiáng)制要求而是 nvm 約定讀取的一個(gè)項(xiàng)目級(jí)版本文件。它的內(nèi)容非常簡(jiǎn)單通常只有一行版本號(hào)。在項(xiàng)目根目錄執(zhí)行node -v .nvmrc這會(huì)把當(dāng)前 Node 版本寫成類似v20.18.1的字符串。你也可以手動(dòng)創(chuàng)建.nvmrc寫入20或精確一點(diǎn)18.20.4nvm 對(duì)格式有一定容忍度完整版本號(hào)和大版本號(hào)都能識(shí)別。但為了最大程度減少歧義我建議要么寫完整版本號(hào)要么只寫大版本號(hào)不要混用奇怪的前綴。有了這個(gè)文件后任何人進(jìn)入項(xiàng)目執(zhí)行nvm installnvm 會(huì)自動(dòng)讀取.nvmrc并安裝對(duì)應(yīng)版本執(zhí)行nvm use會(huì)自動(dòng)切換。新同事克隆項(xiàng)目后全程只需要兩條命令就能把 Node 環(huán)境拉齊。5.2 進(jìn)入目錄自動(dòng)切換的配置每次進(jìn)入項(xiàng)目目錄都手動(dòng)敲一遍nvm use雖然不麻煩但很容易忘。忘了之后你可能會(huì)在一個(gè)錯(cuò)誤的 Node 版本下跑 npm install平白無(wú)故多出一些詭異報(bào)錯(cuò)。更省心的做法是在 zsh 里掛一個(gè)自動(dòng)切換鉤子。在~/.zshrc末尾加入下面這段autoload -U add-zsh-hook load_nvmrc() { local node_version$(nvm version) local nvmrc_path$(nvm_find_up .nvmrc) if [[ -n $nvmrc_path ]]; then local nvmrc_node_version$(nvm version $(cat $nvmrc_path)) if [[ $nvmrc_node_version N/A ]]; then nvm install elif [[ $nvmrc_node_version ! $node_version ]]; then nvm use fi fi } add-zsh-hook chpwd load_nvmrc load_nvmrc這段邏輯不復(fù)雜chpwd鉤子會(huì)在你切換目錄時(shí)觸發(fā)它會(huì)向上查找.nvmrc如果目標(biāo)版本還沒(méi)安裝就自動(dòng)安裝如果已安裝但當(dāng)前版本不對(duì)就自動(dòng)切換。第一次配置時(shí)也許會(huì)覺(jué)得“多了一段莫名其妙的東西”但之后的效果是進(jìn)入項(xiàng)目目錄無(wú)聲無(wú)息地自動(dòng)切換到正確 Node 版本幾乎感覺(jué)不到它的存在。這才是多版本管理的理想形態(tài)。5.3 與 package.json engines、CI 的配合.nvmrc解決的是“本地用什么版本”但想把它變成團(tuán)隊(duì)和 CI 的共識(shí)還需要另外兩處配合。第一處是 package.json 的engines字段{ engines: { node: 18 } }它的作用是給 npm 一個(gè)版本約束聲明。注意engines默認(rèn)只是提示npm 會(huì)輸出 warning但不會(huì)強(qiáng)制攔截安裝。你要是想讓它在安裝時(shí)直接報(bào)錯(cuò)可以配合.npmrc里的engine-stricttrue使用不過(guò)實(shí)際團(tuán)隊(duì)中很少開(kāi)這么嚴(yán)。第二處是 CI 流程。以 GitHub Actions 為例actions/setup-node支持直接讀取.nvmrc- uses: actions/setup-nodev4 with: node-version-file: .nvmrc這樣本地和 CI 用的是同一套版本約定避免“本地跑得好好的CI 上就掛”的版本不一致問(wèn)題。配置位置作用是否必須.nvmrc鎖定本地 Node 版本強(qiáng)烈建議package.jsonengines聲明項(xiàng)目 Node 范圍建議CI 讀取.nvmrc統(tǒng)一 CI 與本地版本建議我見(jiàn)過(guò)太多項(xiàng)目只在 README 里寫一句“請(qǐng)使用 Node 18”結(jié)果團(tuán)隊(duì)十個(gè)人有八個(gè)版本。版本約定這種東西寫成口頭要求基本等于沒(méi)有落到文件里才算數(shù)。6. 安裝和切換過(guò)程中我真實(shí)踩過(guò)的幾個(gè)坑6.1 nvm 命令找不到問(wèn)題多半不在安裝而在于 shell 配置加載最常遇到的報(bào)錯(cuò)是安裝成功后關(guān)掉終端再打開(kāi)輸入nvm提示 command not found。排查順序建議這樣command -v nvm echo $SHELL grep -n nvm ~/.zshrc ls ~/.nvm/nvm.sh前三步分別確認(rèn)當(dāng)前命令是否可見(jiàn)、當(dāng)前 shell 是哪種、nvm 初始化代碼有沒(méi)有寫進(jìn)配置文件。如果前面的輸出都正常唯獨(dú)command -v nvm沒(méi)結(jié)果往往是因?yàn)樾陆K端沒(méi)有重新加載配置或者你在當(dāng)前窗口里手動(dòng)執(zhí)行過(guò)unset。有幾次我排查到最后發(fā)現(xiàn)是 shell 配置文件里出現(xiàn)了異常語(yǔ)法導(dǎo)致整個(gè)文件后半段沒(méi)有執(zhí)行。這種情況不會(huì)報(bào)出明顯錯(cuò)誤只是 nvm 初始化代碼靜默失效。處理方式是用zsh -n ~/.zshrc檢查語(yǔ)法把報(bào)錯(cuò)的引號(hào)或亂碼修掉。6.2 版本存在卻切不過(guò)去注意版本號(hào)的書寫習(xí)慣nvm ls明明列出了 v18.20.4執(zhí)行nvm use 18.20.4卻提示找不到。這種情況多數(shù)是版本號(hào)前綴和格式的問(wèn)題。我自己的習(xí)慣是盡量從nvm ls的輸出里復(fù)制版本號(hào)而不是手敲。比如nvm ls顯示的是v18.20.4那就用nvm use v18.20.4或者直接用nvm use 18。如果你在.nvmrc里寫了v18nvm 也能識(shí)別但有些自動(dòng)化腳本對(duì)帶v前綴的處理并不一致容易埋坑。更隱蔽的坑是nvm use 18提示N/A: version 18 is not yet installed。你可能覺(jué)得“我明明裝過(guò) Node 18”但實(shí)際安裝的是v18.20.4而nvm use 18不會(huì)自動(dòng)補(bǔ)全具體小版本它需要先找到已有版本的精確匹配。這種情況直接執(zhí)行nvm install 18或者nvm use v18.20.4就能解決。6.3 電腦里同時(shí)有 Homebrew 版 Node怎么定位和解決如果之前用brew install node裝過(guò) Node再裝 nvm 后可能出現(xiàn)node -v始終顯示 Homebrew 版本的問(wèn)題。先用這兩條命令定位which node which npm如果輸出/opt/homebrew/bin/node說(shuō)明當(dāng)前 PATH 里 Homebrew 的目錄排在 nvm 前面。正常來(lái)說(shuō)nvm 的初始化腳本會(huì)把~/.nvm/versions/node/.../bin插到 PATH 最前面但有些情況下會(huì)因?yàn)?shell 配置文件的加載順序、brew link創(chuàng)建的符號(hào)鏈接或者其他終端工具的 PATH 注入導(dǎo)致 nvm 沒(méi)有成功覆蓋。我的處理方式是既然決定用 nvm 管理 Node就把 Homebrew 版 Node 卸掉避免兩套體系長(zhǎng)期共存在一臺(tái)機(jī)器上相互消耗brew uninstall --ignore-dependencies node執(zhí)行完再which node應(yīng)該會(huì)指向~/.nvm/versions/node/.../bin/node。這一步做完環(huán)境會(huì)清爽很多。6.4 Apple Silicon 上的架構(gòu)與原生模塊編譯問(wèn)題M1/M2/M3 芯片的 Mac 引入了一個(gè)新變量架構(gòu)。Node 16 之后的官方版本普遍提供了darwin-arm64二進(jìn)制但更早的版本在 Apple Silicon 上并沒(méi)有原生構(gòu)建產(chǎn)物。在終端里執(zhí)行下面命令可以確認(rèn)當(dāng)前 Node 架構(gòu)node -p process.arch如果輸出arm64說(shuō)明當(dāng)前跑的是原生 ARM 版本如果輸出x64說(shuō)明可能是通過(guò) Rosetta 翻譯層運(yùn)行的 x86 版本。老項(xiàng)目如果必須用舊 Node常見(jiàn)思路是給它們準(zhǔn)備一個(gè) Rosetta 終端。但這樣做會(huì)帶來(lái)另一個(gè)問(wèn)題同一臺(tái)機(jī)器上兩種架構(gòu)的全局包路徑不同一旦混用原生模塊會(huì)來(lái)回編譯極其消耗時(shí)間。我的經(jīng)驗(yàn)是“盡量別混用架構(gòu)”要么整個(gè)項(xiàng)目統(tǒng)一在 ARM 終端下跑要么明確指定 Rosetta 環(huán)境并在項(xiàng)目 README 里寫明啟動(dòng)方式。原生模塊編譯出錯(cuò)時(shí)也先別急著懷疑架構(gòu)。常見(jiàn)的gyp: No Xcode or CLT version detected基本就是第 3.2 節(jié)說(shuō)的 Command Line Tools 缺失先回頭把基礎(chǔ)環(huán)境補(bǔ)齊再考慮是不是架構(gòu)問(wèn)題。6.5 卸載不干凈帶來(lái)的二次污染最后說(shuō)說(shuō)卸載。如果你用 nvm 安裝過(guò)多個(gè)版本卸載某個(gè)版本很簡(jiǎn)單nvm uninstall 18.20.4它會(huì)自動(dòng)移除對(duì)應(yīng)目錄和相關(guān)的全局依賴。這是 nvm 的優(yōu)勢(shì)版本與全局依賴共存亡卸載干凈利落。但如果你之前通過(guò)官網(wǎng) pkg 或 Homebrew 裝過(guò) Node后來(lái)想徹底清理就不能指望 nvm 幫你處理。殘留的常見(jiàn)位置包括/usr/local/bin/node/usr/local/bin/npm/usr/local/lib/node_modules/usr/local/share/systemtap/tapset/node.stp清理前務(wù)必先用which node和which npm確認(rèn)路徑再針對(duì)性地刪文件和符號(hào)鏈接。千萬(wàn)不要直接對(duì)著/usr/local/bin一通亂刪那會(huì)牽連其他工具。最穩(wěn)妥的做法是如果你不打算保留任何系統(tǒng)級(jí) Node卸載對(duì)應(yīng)來(lái)源的包之后手動(dòng)檢查這幾個(gè)路徑把指向舊 Node 的符號(hào)鏈接清理掉再讓 nvm 接管完整的 Node 環(huán)境。我在實(shí)際使用中的體感是多版本切換這個(gè)能力真正用到時(shí)才知道它有多值。個(gè)人常駐兩個(gè)版本就夠了一個(gè) LTS 應(yīng)付絕大多數(shù)業(yè)務(wù)開(kāi)發(fā)另一個(gè)稍新的版本用來(lái)驗(yàn)證新特性。維護(hù)老項(xiàng)目時(shí)進(jìn)目錄先看有沒(méi)有.nvmrc沒(méi)有就當(dāng)場(chǎng)補(bǔ)一個(gè)提交到倉(cāng)庫(kù)。這個(gè)動(dòng)作看起來(lái)很小卻能讓之后的每次換電腦、每次同事接手都少踩一大片坑。環(huán)境管理工具本身不復(fù)雜但值得在項(xiàng)目入口處把版本約定認(rèn)真寫下來(lái)。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
另类亚洲电影| 国产亚洲99久久精品熟| 亚洲国产成人裸舞| 色九九九综合| 福利视频在线播放| 亚洲不卡欧洲| 免费观看的婷婷五月视频在线| 伊人久久大香线蕉av最新| 一本大道熟女人妻中文字幕在线| 国产免费一区二区三区三州老师F1F1.CC| 97亚洲色 torrent magnet| 伊人综合网站| 日韩九九| 五月丁香六月激情综合| 婷婷五月天黄色小说| 综合色影院| 涩涩五月天| 伊人AV五月婷| 区区欧美你爱| 色的色综合| 1024亚洲| 一区二区三区四区牛| 青草五月天| 九九精品视频在线观看| 99视频这里只有久久精品 | 色五月婷婷网| 丁香婷婷激情综合五月激情| 日本婷婷综合精品| 美女黄频aⅴ视频| 国产精品99久久久久久久女警| 日日爱699| 97亚洲色 torrent magnet| 久草x色在线观看99| WWW.99热| 天天肏视频| 色噜噜婷婷| 这里只有精品99视频| 丁香婷婷婷五月综合色情| 伊人无码高清| 能看的av| 成人做爰黄A片免费看直播室男男| 欧美大香蕉视频| 五月婷婷激情久久| 激情五月天激情小说| 很很干五月天| 激情综合网亚洲色图| 天天玩夜夜操天天爽| 欧美三级黄色片久久| 日本色色色色色色色色一色二色| 五月婷婷色欲| 大香蕉视频婷| 五月激情射| 99日热在线视频| 婷婷大香蕉| 思思热99热| 26UUU欧美| WWW、日本色丁香、co m| 中文AV在线播放| 91九色欧美| 丁香六月激情国产| 丁香五月激情网| 五月丁香综合久久夜夜| 久久婷婷五月天激情四射| 九九综合五月欧美| 欧美操逼天堂| 天天爽夜夜爽夜夜爽精品| 男人天堂99| 大香蕉五月天婷婷| 五月情四婷婷| 婷婷五月情| 这里只有精品1| 无码一区二区三区四区五区| 99re思思精品在线观看| 国产激情视频在线观看| 亚洲中文字幕av| 爱性综合网| 九九综合九色欧美狠狠| 99久久视频| 五月婷六月| 色99日韩| 婷婷操逼网| 五月丁香少妇网| 99亚洲视频| www.97干视频| 99re在线视频精品,这里只有精品18,| 日本乱子人伦在线视频| 亚洲超碰在线| 婷婷六月色| 天天爽天天日人人爱| 91成人看片| 97香蕉人人在线观看| 久久婷婷五月综合色天| 五月丁香亚洲校园欧美| 另类五月激情| 五月婷婷在线视频| 色婷婷小视频| 天天爽爽日日做做| 丁香六月婷婷综合欧美| 免费黄色片子| 色婷婷综合成人| 久久久人妻久久久| 五月天婷a| 天天日夜夜帕| 激情色播| 日韩在线观看亚洲| 99久久成人| 日本色色视频| 亚洲亚洲人成综合网络| 91婷婷在线| 丁香婷婷啪啪啪| 丁香五月婷中字幕| 国产69精品久久久久999小说| 九9九9无码| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | 成人丁香五月| 9l视频自拍9l九色成人| 91日综合欧美| 99热这里只有国产精品| 久久99热这里只有精品| 久久精品99国产精品日本| 人人综合色| 亚洲AV网站| 久热中文字幕在线线观看| 亚洲性爱区无码区| 午夜天堂一区人妻| 开心久久xxx色| 开心深爱激情网| 九色七七| 色色色97| 色五月婷婷色五月婷婷色五月婷婷| 亚洲第一第二网站| 国产激情在线| 亚洲色另类| 亚洲精品久久久久久久久久吃药| 99热99| 天天草天天爱| 天天爽人人综合免费7799| 另类图片五月天激情| 日日操夜夜操狠狠操| 色色色网站| 人人人操 超碰| 99色综合网| 亚洲五月婷婷| 五月婷婷丁香六月| 国产三级片91| 激情综合在线播放| 99re这里只有| 亚洲成人另类| 91九色精品熟女内射| 色婷婷色五月综合| 99精品在线观看视频| 欧美日本韩国亚洲| 五月天狠狠干| 久久婷婷艹| 丁香婷婷偷拍| 婷婷丁香无码专区| A久网| 99在线精品免费视频| 97亚洲色 torrent magnet| 类似婷婷激情综合网站| 丁香五月天黄色片| 日本色五月婷婷| www.色婷婷.com| 99热主页日本| 五月天激情小说| 九月激情网| 99热免费精品| 欧美视频五区| Av九九| 国产免费一区二区三区三州老师F1F1.CC| 五月激情婷婷女| 另类小说五月天| 99色在线观看免费| 丰满少妇猛烈A片免费看观看| 五月天激情综合网站| 9久热| 综合另类视频| 综合99综合久久久久久久| 久久久婷婷五月亚洲97号色| 丁香五月色| 青草视频在线观看视频| 人操91在线| 九九热视频网站| 婷婷久久综合久色| 影音先锋毛片网站| 国产精品激情AV久久久青桔| 免费精品66| 丁香五月天堂网| 欧美日韓成人亚洲精品另类| 亚州第一A片| 无码色| 天堂久久婷婷| 亚洲亚洲人成综合网络| 人妻久久久久久久| 天天日日夜夜爽| 国产精品久久久久久久久久免费 | av在线观看网址| 激情网婷婷五月天| WWW·色色色·COM| 欧美日韩99| 五月丁香 啪啪啪| 免费AV在线网址| 五月天色图| 亚洲成人黄色网| 99久久99九九99九九九| 色色色色色色网站| 99热大片| 开心五月深爱五月丁香五月激情五月| ji'qi'luan'ren'lun| 色婷五月天| 日韩高清久久| 日日夜夜狠狠| 色五月婷婷五月| 香蕉综合网| 极品人妻XXXXOOOO| 六月婷婷激情图片| 99色色色色| 大香蕉婷婷丁香天堂AV| 久久停停超碰| 婷婷丁香五月天在线视频| 俺也去色| 玖玖精品视频| 激情五月丁香六月综合AVXXXX| 婷婷日在线观看| 亚洲成人电影在线免费观看| 九九热自拍| 五月丁六月香av| 亚洲蜜乳AV| 拍真实国产伦偷精品| 99热99这里有免费的精品| 丁香五月网| 黄桃AV无码免费一区二区三区| 婷婷在线激情| 99re8这里只有精品99re8热视频| 日本www五月婷婷| 五月天婷婷亚洲| 亚洲V国产V欧美V久久久久久| 五月丁香六月婷婷激情视频在线观看免费 | 天堂色婷婷| 九六五月天婷婷| 久久丁香五月天| 99色.com| 丁香五月五月婷婷| 日本少妇AA一级特黄大片| 日日操人人操| 九九这里精品| 久久人人九九| 大香蕉久久婷婷| 91九色白丝| 精品久久9| 五月丁香六月婷婷啪啪| 五月香蕉网| 影音先锋男人女人| 办公室少妇激情呻吟A片在线观看| 五月丁香久久网| 免费观看的婷婷五月视频在线| 丁香五月玖玖| 国内熟女黄色系列| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 色五月婷婷婷婷| 日本激情91| 中文在线视频久9| 激情内射人妻1区2区3区| 成人在线精品| 婷婷在线视频| 天天综合网、天天综合色| 97黑人精品区| 草一草avb| 久久99综合网| 色婷婷久久综| 日本久久9| 精品国产a| 亚洲激情四谢| 婷色视频| 丁香五月天堂网| 婷婷在线精品| 99热九九这里只有精品10| 五月天婷婷色在线视频免费观看| 性日本激情| 超碰成人在线观看| 日本精品。999| 涩涩五| 欧美激情Va| 综合xx网| 婷婷五月激情在线视频| 五月WWW| 日本va欧美va欧美| 五月婷婷综合在线| 成人版视频在线观看| 色婷婷成人网| 99免费在线视频| 成人在线99| 久操热| 99爱精品| 亚洲成人网站在线观看| 九九精品大香蕉| 欧美激情综合色综合啪啪五月| 六月丁香婷婷五月天| 大香蕉久久视频久久视频 | 亚洲日韩一页精品发布| 九九色网| 亚洲婷婷视频| 97偷拍在线视频| 18久久| 99人人看| 婷婷欧美色| 五月婷婷,六月激情| 五月天天丁香婷婷在线中| 99久久国产宗和精品1上映| 99热这里只有精品1998| 大香蕉婷婷五月| 五月叮香啪| 婷婷中文字幕| 亚洲av成人一区二区电影在线| 丁香激情五月| 五月天婷婷六月激情网| 丁香五月亚综合图片| 色五月婷婷激情| 99A级片| 五月天丁香| 麻豆WWWCOM内射软件| 操人视频91| 五月天婷婷基地丁香| 日本熟女一区二区| 五月色亭丁香| 婷婷香蕉| 丁香五月婷婷亚洲综合精品| 久热99中文字幕| 欧美综合123区| 吾爱AV导航| 婷婷久久婷婷色五月| 亚洲五月花| 夜夜干天天操| 99在线精品视频| 99热8| 天天久久婷婷| 欧美综合五月丁香五月天| 怡红院视频| 久久色情| 99国产小视频2013| 99熟女| 日韩综合久| 人人舔人人色人人高潮| 丁香婷婷基地| 啪精品| 五月激情开心婷婷| 久久婷婷亚洲| se婷97| 五月婷婷综合激情| 夜夜穞天天穞狠狠穞AV美女按摩| 狠狠色婷婷7777久| 人妻人人操| 五月天伊人久久| 亚洲一区先锋影音| 天天射美女| 婷婷五月18永久免费网站| 五月丁香人人婷婷在线观看| 最近韩国日本免费高清观看| 婷婷基地成人五月天| 五月婷婷丁香网| 99免费热视频在线| 98色丁香五月婷婷综合网| 狠狠操天天操天天操| 欧美草久久五月天91| 亚洲无码色色| 天天干电影| 99九九99九九九视频精彩| 亚洲无码色色| 久久久精品99| 久久丁香五月| 亚洲成人九九九| 婷婷十月激情综合网| 色婷婷六月| 婷婷五月开心中文字幕色| 天天干天天插| 狠狠干 狠狠操| 天天射影院| 视色网在线播放| 91丨九色丨熟女高潮| 99re这里只有精品99| 婷婷五月天播播| 国产一区二区av免费| 综合色天天| 婷婷综合五月天| 日韩肏屄网| 123草逼网| 日本久久人| 综合五月天| 肏屄色播伊人97婷婷| 色婷婷激情| 中美日韩成人在线| 无码AV免费精品一区二区三区 | 青草视频在线观看视频| 婷婷六月五月天综合| 色五月色五天色情网址| 五月婷婷之综合激情| 婷婷第一页| 99re热在线视频| 亚州激情九月| h在线看免费版在线看| 人人色婷婷五月天| 欧美精品狠狠色丁香婷婷| 丁香婷婷色五月合集| 天天日夜夜夜操操操操| 天天插综合网| 日本色图综合| 婷婷五月天激情小说| 97精品综合久久内射| 嫩草AV久久伊人妇女超级A| 色五月91| 色五月噜噜| 久9视频| 五月天激情小说网| 天天视频精品9| 精热在线综合网| 91精品激情9| 婷婷五月天六月丁香| 欧美大香蕉视频| 婷婷伊人久久| 五月激情丁香| 99综合免费视频| 99免费在线| 99福利视频| 久草狼人| 婷婷最新地址| 91超碰人人操| 精品99在线| 五月熟妇婷婷久久| 婷婷九九| 婷婷大香焦| 五月婷色色| 久久9热| 夜夜天天天天天干天天爽| 五月综合色| 99热在线这里| 亚洲日韩26uuu| 伊综合蕉| 国产亚洲精品AAAA片APP| 色五月婷婷很很操| 我爱va亚洲va52| AAA久久久| 天天肏天天舔AV| 六月婷婷色色色| 久久婷婷操| 人妻AV在线观看| 欧美日本不卡黄色片| 9+1视频网址| 五月丁香亚洲校园欧美| 亚洲碰碰碰| 射满了还射免费在线观看 -午夜版全集-新视觉影院 | 九九色热| 激情床戏| 九月色婷婷综合| 男女久久婷婷五月天| 日本va欧美va欧美va精品| 激情五月婷婷她| 亚洲精品国产熟女久久久| 激情九月婷婷| 九九久久五月天| 九九热在线视频观看| 天天综合五月| 免费AAAAA网| 国产激情在线观看| 97人碰人操| 日本熟妇乱妇熟色A片蜜桃 | 97色五月丁香婷婷| 国产精品成av人在线视午夜片| 国产成人网站在线观看| 99re热在线观看| 五月丁香六月婷婷无码| 26uuuu精品一区二区| 婷婷亚洲影院| www,com,五月色色| 97综合色片| 都市激情亚洲| 五月综合丁香婷婷| AAA久久| 五月丁香激情四射综合| 大香蕉婷婷丁香天堂AV| 九九热黄色| 97人人看| 九九热这里有精品视频| 婷婷5月开心6月| 日韩黄黄| 久久66精品| 色久免费| 婷婷激情图片| 色狠狠综合| 激情五月天视频| 欧美色婷婷| 婷婷成人视频| 无码少妇高潮喷水A片免费| 成人精品视频99在线观看免费| 天天干天天色综合| 日韩AV中文在线观看| 久久人人添人人爽添人人片αV| 国产性av| 久久大香免费| 第四色激情网| 91大屁股精品| 午夜色色色极品视频| wwW天天干| 亚洲V国产V欧美V久久久久久| 天天色粽合合合合合合合| 色综合九九色综合88| 丁香六月综合激情| 99欧美热| 丁香九月综合激情| site:jszngf.com| 久色网五月| 狠狠草在线观看| www.色9| 久久综合99| 90色免费视频| 97色干| 婷婷丁香五另类网站| 2025年最新亚洲在线欧美| 成人性爱无码| 婷婷五月成人| 精品一区二区三区四区五区六区| 丁香五月www| 成人网址在线观看| 久久AV电影| 丁香六月在线综合| www.色婷婷.com| 九九99免费视频| 日韩精品视频中文字幕| 欧美婷婷精品激| 婷婷王月天影院| 五月丁香好婷婷A片网| 中文字幕不卡+婷婷五月| 专区无日本视频高清8| 久艹久| 九九久久99| 丁香五月婷婷激情中文| 激情综合网五月婷婷| 婷五月天| 久草热久草在线视频| 日韩黄色AV无码| 激情婷婷五月亚洲| 久青草影院| 丰满少妇猛烈A片免费看观看| 九月综合| 亚洲丁香五月| 欧美日本日韩| 五月婷婷激情综合在线| 91人操人人人操人| 97碰碰叉| 丁香五月日啪| 六月婷婷中文字幕| enecarbon-materials.comWu染请涟系Bao护@wip1688| 久久久思思热| 91性高潮久久久久久久久| 97成人在线视频精品| 精品99爱免费视频在线观看| 天天色综网| 天天综合五月天| 五月丁香AV在线| 丁香五月影院| 97人人干| 九九色热| 五月色网| 蜜乳中文字| 99精品视频在线观看| 人妻人人操| 日本欧美国产| 丁香六月婷婷基地| 激情五月视频| 五月停性愛| 久久五月丁香激情综合| 成人做爰A片免费看视频| 欧美精品999| 中文字幕,综合,91| 九九九午夜视频| 五月丁香花婷婷玉莉AV| 久久激情四射| 9热在线视频| 亚洲天天免费| 岛国在线观看91| 五月激情久久综合| 欧美情色一区| 夜夜骑天天玩天天日| 大地资源色婷婷视频在线| 99精品视频偷拍| 丁香五月天.com| 九色 在线| 五月综合久久| 九九综合色| 91综合色| 色婷婷五月天激情| 人妻AV在线| 婷婷99| 丁香五月成人| 婷婷成人五月天一区| 成人无码精品1区2区3区免费看 | 亚韩精品视频1区| 99热精品9| 九九色色| 欧美97p| 色天使色综合| 婷婷五月天在线视频网站| 玖玖精品婷婷| 五月天色影院| 欧美性丁香色色五月天| 色五月天激情| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 丁香婷婷浪潮AV久久综合| 久久久久久久合一狠狠做深爱| 色播激情| 亚洲欧洲另类| 亚洲综合狠狠艹| 综合激情在线观看| 色婷婷五月综合| 丁香亚洲婷婷五月| 激情五月天第四色| 久久综合性| 色综久久久| 色情网综合| 丁香五月天.com| 激情综合自拍五月婷婷色五月| 亚洲国产精品二二三三区| 精品A√| 99在线69| 五月激情综合婷婷| 大香蕉久久久久| 五月丁香婷婷无码A∨| 中文字幕丰满乱孑伦无码专区 | 婷婷丁香社区网| 操97在线观看| 激情小说五月天| 欧美激情2025| 国产成人网| 天天激情站| AV操逼网| 色婷婷狠狠干芒果TV| 色婷婷五月色| 亚洲AV无码电影| 狠狠干夜夜干| 九九久久五月天综合伊人| 99碰网站| www.金莲av| 丁香婷婷色五月| 日日夜夜爽| 日本99视频| 99ri国产精品| 青青草国产亚洲精品久久| 五月天激情婷婷| 婷婷五月天激情偷拍| 成人资源在线| 丁香激情五月| 婷婷色啪| 色五月丁香五月| 天天插天天很| 99热r| 久久99大全| 99热 日韩| 久久久久久久人妻| 九九热精品| 天天肏天天爽夜夜爽| 人妻性爱av网站| 九久久九精品视频| AA片在线观看视频在线播放| 五月开心激情| 成人在线精品| 热久国产| 久久草中文日韩欧美| 99热在线观看精品免费| 国产精品色一哟哟| 婷婷激情综合无月| 激情五月天在线观看色婷婷| 青996青| 日韩九九| 操射国产日本| 无码人妻一区二区三区四区| 99视频精品视频| 操碰97| 99ri在线观看视频| 97视频.干com| 色婷婷操逼| 国产综合色婷婷精品久久| 婷婷欧美激情| 色播激情| Y11111111111少妇电影院| 香蕉影院色| 免费黄网不卡AV| 亚洲成人在线观看av| 91男女视频在线观看| 风流少妇A片一区二区蜜桃| 99ER热精品视频| 91碰碰碰| 日日操天天操| 东京热免费视频| 久久久精品色| 嫩BBB槡BBBB搡BBBB| 色噜噜狠狠色综合日日| 精品夜夜澡人妻无码AV| 久草婷婷网 | 丁香五月影视| 直接看的AV| 日本九九九九| 丰满少妇猛烈A片免费看观看| 国产成人精品一区二三区熟女在线| 热久久这里只有精品| 国产乱人偷精品人妻A片| 久久性爱99国产| 丁香五月天日韩无码| 青青操丝袜美腿| 玖玖五月| 欧美va亚洲va| 人人做天天爱| 少妇人妻人伦A片| 激情五月天色色网| 99精品国产在热久久| 色色色激情网| 免费看无码视频A级| 天天噜日日噜综合无码| 二人电影免费版在线观看| 亚洲综合色丁香五月天| 99热免| 99综合久久| WWW.桔色成人.COM| 欧美黄色一级录像| 五月婷婷六月综合| 激情五月天婷婷免费观看| 五月激激网w'w'w| 天天干天天干天天干天天干天| 成人短视频在线免费观看| 丁香婷婷五月| 国内精品免费一区二区2009| 色色色婷| 久久 这里只有精品1| 无码网站视频| 五月婷久久| www五月婷婷| 97在线刺激| 久久婷婷五月综合激情国产| 噜噜狠狠色综无码久久合欧美| 99热这里只有精品16| www99精品日韩| 久久精品噜噜噜成人A∨色欲| 九九伊人网| 五月丁香综合激情在线观看| 五月天婷婷乱论小说| 五月天大香蕉| AV成人在线播放| 黄涩毛片| www.99热视频| 7777国产盗摄农村女人| 五月丁香香蕉| 99精在线| 99年操人人爽| 亚洲激情婷婷| 这里只有精品视频99| 丁香五月天堂| 91大神操美女| Www,五月天| 五月婷婷丁香| 超碰91在线| 日本va欧美va欧美精品88| seav天堂| 五月丁香婷婷网网网网| 九九人人精品| 午夜九九九九九九| 欧美亚洲婷婷五月| 天天日天天色| 国产激情综合| 免费国产视频| 3DAV亚洲香蕉久久 一区二区| www.色窝| 五月激情啪啪| 狠狠综合区| 色久五月天| 超碰只有精品在线| 婷婷六月综合在线| 99色色视频| 人人97碰| 狠狠五月激情丁香六月| 亚洲成人中文字幕| 日日爽日日爽| 99热这里只有精品免费观看| 激情 久久 婷婷| 日本91在线| 99无码视频| 天堂色色色| 操射国产日本| 影音先锋91在线资源站| 激情深爱综合| 色色色色综合网| 九月婷婷综合| 激情综合网五月天| 综合网网欲色| 99精品色| 日韩限制级大尺度黑料泄密大尺度视频一区二区在线观看 | 99色综合| 播五月婷婷开心| 色五月激情网| 婷婷瑟五月天久久综合| AA片在线观看视频在线播放| 五月的丁香六月的婷婷| 无码一区精品一区视频| www.五月丁香av| 九九精品9| 丁香五月六月激情久久| 4438全国最大视频成人网站在线观看 | 这里只有精品热| 婷婷五月天成人| 国产成人AV人人爽人人澡Va| 图片区 小说区 区 亚洲五月 | 久热网在线视频| 99年操人人爽| 啄木鸟丝袜美女福利视频| 天天婬色综合| 久久99网| 99小视频在线| 国产肥白大熟妇BBBB视频| 九六五月天婷婷| 四虎99热在线观看网站| 国产精品久久久海的味道| 我去色色网五雨天| 五月婷婷丁香在线| 色婷婷五月天激情久久| 久久大香蕉丁香| www.99热这里只有精品| A片一曲| 久久人妻精品| 色婷婷激情五月天| 99爱视频| 五月婷丁香花| 色五月综合激情网| 99久久精品国产色欲| 一级片sese片.COM| 东京热五月婷婷| 人人操AV| 东京热伊人| AA片在线观看视频在线播放| 五月丁香婷婷成人综合网| 日本天堂爱爱| 嫩BBB槡BBBB搡BBBB| 久久这里只有欧美| 狠狠色狠狠| 久久精品一区二区三区四区| 五月丁香好婷婷A片网| 亚洲激情五月| 国产亚洲在线| 色婷婷丁香五月天在线观看| 五月婷五月婷伊人伊人五月婷| 97亚洲视频在线| 天天操夜夜操| 欧美天天综合网站上去吧| 丁香社92视频| 日本一级| 久久五月婷综合网| 久久9久久| 久热婷婷综合| 亚洲天堂久久| 5月丁香啪啪啪| 爱之国产色情综合| 亚洲AV免费国产电影| 深爱激情丁香五月| 中文字幕丁香五月| 99热碰碰热| 色五月婷婷777| 91美女被操| 色99热| 五月婷婷六月丁| 综合网啪| 亚洲欧美成人在线| A在线观看| 五月丁香六月婷婷综合网缴情| 9久精品视频| 毛片九九九九九九| 亚洲字幕AV一区二区三区四区| 丁香五月在线视频黑人| 97自拍视频在线| 视频1区2区| av免费人人| 日本色婷婷综合| 99ri在线视频| 久久jiuwww| 五月婷婷先锋| 国产亚洲色婷婷久久99精品9j| 狠狠操狠狠插| 九九热av| 日韩 中文 欧美| 亚洲欧美999| 九九热在线观看视频网站| 丁香九月婷婷| 99热1| WwW色婷婷| www.色婷婷.com| www.99视频| www.色9| 六月婷婷在线| 色色色色色网站| 人人综合五月人人婷婷| 天天做天天双| 日韩成人中文字幕| 97碰碰在线观看视频| 日本玖玖在线| 91碰操| 欧美精品狠狠色丁香婷婷| 99久久99综合| 国产69久久久欧美黑人A片| 亚洲婷婷五月天| 狠狠五月天婷婷| 日韩综合久久| 色碰碰视频| 丁香五月天堂亚洲社区| 碰碰人人人| 国模狼狼| 另类国产欧美视频| 狠狠 久久| 综合九色| 啪啪日本欧美| 国产色色色色色| www.久久色.com| 五月天久草| 丁香五月成人丝袜| 99干99| 91九色成人原创视频| 色婷婷yy久| 婷婷五月色花丁香社区| 91大神在线免费看视频全集男男一起操| 北条麻妃伊人| 九九超碰人人| 色哟哟精品| 五月婷婷无码| WWW.夜夜操.com| 婷婷丁香五月激情图片| 米奇影视五月天| 婷婷五月天久久久| 亚洲乱码在线观看| 色情五月综合婷婷| 精品人妻伦九区久久AAA片| 日韩三级高清无码| 欧洲综合视频| 亭亭玉月丁香| 日本色色网| 大香蕉婷婷| 99热精品在线| 91男人资源站| 色九月欧美| 天天插天天插天天日| 五月丁香色狠狠干大屄| 婷婷六月天激情| 色香蕉影院| 成人无码髙潮喷水A片| 九热av| 97资源碰碰| 激情丁香淫荡婷婷| 拳交大逼| 日韩成人精品中文字幕| 丰满少妇猛烈A片免费看观看| 婷婷99狠| 五月丁香免费视频| 久久久婷婷| 夜夜骑天天玩天天日| 久久综合中文| 亚洲午夜在线视频| 99热这里有精品首页10| 5月色亭亭视频| 亚洲欧美一区二区三区爱爱动图| 久久精品系列| 少妇性按摩无码中文A片| 极品五月天| 超碰av在线| www.夜夜騎夜夜狠| 五月婷久久| 亚洲精品第一国产综合亚AV | 5月激情天| 黄色激情五月天| 五月天婷久精视频| 日本人妻伦在线中文字幕| 婷婷综合影院| 六月天六月婷| 色五月综合| 色吧网综合| 青青色com久久| 九九热10| 97色女人在线| 五月天婷婷导航| 丁香九月综合| 色色六月| 五月婷婷丁香综合| 五月婷婷二月丁香| 天天干,天天日| 97九色视频| 天天干com| 婷婷六月色| 91综合在线观看| 99re这里只有精品免费| 91婷婷丁香| 97成人在线视频精品| 婷婷五月天激情在线观看| 激情六月丁香| 9 9热这里有精品| 26uuuu精品一区二区| 亚洲婷婷免费| 偷拍91九色| 天天做夜夜爽| 五月婷婷黄网站大全| 色综合xx| 久久人妻视频| 九九热自拍| site:pnnrt.com| 日日操夜夜操中国无码| 99色区| 欧美熟女99| 大香蕉人人网| 五月丁香六月激情综合啪啪| 精品人妻久久久久久| 婷婷五月花| 成年AAAA色情| 日韩无码乱轮| 亚洲成人色五月天| 综合久久97| 色天使久久综合| 79成人网| 国产99久久久国产精品免费看 | 乱岳熟女50岁| 亚洲综合丁香五月| 丁香激情五月天| 啪啪色激情五月天| 欧美成人A片AAA片在线播放 | 啪啪视频99| 99热在线观看这里只有精品| 人妻日日日| 五月天婷婷导航| 婷婷五月天天| 五月天婷婷丁香视频| 五月丁香六月激情网站| 青青草日本亚洲| 亚洲在线网站| 五月天啪啪| 激情国产综合| 五月婷婷六月丁香玖玖玫瑰91| 婷婷久久夜| 亚洲乱码日产精品BD| 丁香花五月天| 超碰人妻公开在线| 99精品久久久久久久婷婷久久| 欧美激情综合五月色丁香| 天天操夜夜玩!| 激情五月婷| 婷婷五月丁香基| 五月婷婷综合激情小说| 性生活久久朋友人妻| 超级久久久| 五月丁香六月婷| 色欲天天综合| 五月丁香啪啪激情| 婷婷丁香色五月天久久88| 精品夜夜澡人妻无码AV| 丁香网五月天激情| 六月激情网| 99精彩视频在线观看| 在线色婷婷| 久久五月婷婷丁香| 在线观看五月婷婷网| 国产肥白大熟妇BBBB视频| 一区二区三区视频| 超碰v| 思思久久青草热| 色玖玖玖| 激情综合五月| 五月天色色网站| 色婷婷丁香花五月天| 99视频精品全部观看10| 国产人妻操逼| 久久婷婷综合五月| 夜夜操狠狠操天天操| 色噜噜五月天| 精品色色| 色导航色婷婷五月天在线观看| 伊人狠狠丁香婷婷综合尤物| 伊人激情综合网| 俺也去在线久久精品23欧美综合视频网站,丰满人妻一区二区三区在线视频53,丰满 | 五月丁香色婷婷基地| 校园春色亚洲色| 99丁香五月婷| 天天在线久久综合| 免费视频WWW在线观看网站| 五月婷婷五月天| 五月婷婷色影院| 激情综合文学| 操碰97| 五月天久久综合婷婷丁香| 婷色五月天| 夜夜嗨一区二区三区直播内容 | 色五月激情网| 五月色婷婷综合丁香精品无遮挡| 九月丁香久久网| 97在线视频 欧美| 日日天天干| 婷婷六月情| www.91婷婷| 超级碰碰碰久久网站| 国产成人亚洲综合A∨婷婷| 天天日日天天| 中文字幕,综合,91| 99视频在线观看地址| 激情六月天婷婷| 色婷婷五月综合网| 激情五月婷婷丁香六月| 精品动漫 无码av| 国产SUV精品一区二区6| 丁香激情网| 激情啪啪五月天| 五月丁香777| 五月天激情小说电影| 婷婷综合在线网| 狠狠色综合网| 99热精品9| 99成人网站| 91超碰在线观看| 97超碰在线观看免费| 亚洲乱码日产精品BD| 特级西西4444www无码| 日本一级| 婷婷色六月| 日本va欧美va欧美| 一个色的综合| 色色99| 伊人丁香五月婷婷潮吹| 日本4399天堂中出| 久艹大香蕉| 激情伊人五月天| sewuyuejiqingwang| 第四色色六月色综合| 九月丁香亭亭| 婷婷综合97| 人人爽欧美婷婷久久久五月丁香| 丁香五月婷婷国产av| 人妻丰满精品一区二区A片| 丁香五月在线播放| 色播五月| 色色哒五月婷婷六月丁香| 五月天婷婷青青| 天天舔夜夜操www com| 香蕉综合网| 中文网AV| 婷婷六月激情小说网| 欧美丁香五月| www色婷婷com| 激情国产综合| 激情久久 婷婷| av无码电影| 天堂五月婷婷| 国产精品国产| 毛片九九九九九九九九18| 婷婷久综合| 91大屁股在线| Www.se.久久| 超爽内射| 伊人九九综合| 五月天婷婷伊人| 97操女视频| 久久五月天免费网站| 99色免费| 97九色视频| www.五月婷婷| 九九热99re8热免费观看 | 精品久热| 色五月丁香总合网| 婷婷五日b| 操逼国产91| 亚洲综合字幕色色| 九月丁香婷婷综合激情| 激情99热| 婷婷娱乐丁香综合网| 亚洲综合丁香五月| 五月激情网综合| 五月丁香六月婷婷无码| 狠狠色噜噜狠狠狠888| 婷婷精品综合| 超碰91人人操| 四色永久成人网站| 影音先锋91网站在线观看| 五月丁香六月停停停| 久re热视频| 激情熟女网| 久久九九视频网站| 免费试看小视频 99| 婷婷色系婷色| 激情婷婷五月| 婷婷日欧美在线观看| 99色热| 日本无码专区| 99热99在线精品| 少妇高潮一区二区三区99欧美| 丁香五月婷婷精品视频| 91免费试看| 无码yw| 五月婷婷综合热| 婷婷伊人综合中文字幕| 黄色99网| 六月丁香五月婷婷| 亚洲天堂热| 一级内射毛片| 99色色爰| 国产,欧美,日韩,性爱| 久久婷婷91| 亚洲精品无人区| 五月色婷婷中文字幕| 天天成人综合| 人人操av| 丁香五月影院| 欧美A片在线视频免费观看| 婷婷色啪| 伊人五月天日日夜夜久久久天天| 欧美综合激情五月| 五月丁香六月激情网| 日韩综合久久| 97人人干视频| 久久婷五月婷| 日本操逼九九九九58日本操逼| 色婷婷五月天在线观看| 99久久婷婷综合| 五月丁香爱婷婷深深| 天天日夜夜拍| 日日操夜夜擼| 色爱综合网| 天天爽天天日天天舔| 婷婷久久五月天| 99男人天堂| 俺去也在线www色官网| 亚洲激情在线| 色色综合五月| 色 五月婷婷基地| 婷婷色五月天在线观看| 丁香六月天婷婷| 欧美美女国产日韩一区二区久| 色噜噜狠狠色综合网| 一本到不卡高清DVD| 亚洲色精彩| 精品99在线| 99热很操老逼| 天天天添天天操| 丁香六月婷婷综合| 在线中文亚洲| 99热这里只有精品免费观看| 国产精品第一国产精品| 六月丁香啪啪啪| 日本色五月| Www.se.久久| 米奇激情婷婷| 五月丁香啪啪网| 91人人爽狠狠狠| 五月天婷婷基地| 中文字幕在线视频播放| 丁香婷婷五月天色播| 九九99久久| 亚洲激情六月| 婷婷五月色丁香在线看| 97人人草| 99re这里只有精品99| 婷婷五月激情欧美| 国产91九色| 五月婷六月丁香| 欧美性做爰大片免费看办公室| 超碰人人在线| 婷婷九九| 啪啪啪大香蕉| 丁香午夜天| 婷婷爱在线观看| 激情五月开心五月丁香五月|