以前安裝了 vue 2.9.6 的版本,如今 vue 官方升級到了 3.x 版本,因此想卸載掉 2.9.6 的版本,安裝 3.x 版本,結果輸入官方給出的命令 npm uninstall vue-cli -g
卻沒法成功卸載,一直提示 up to time in 0.03s
,而後百度和 Google 了很久,也沒見到有效的解決方法,最終沉下心慢慢的研究,終於知道了緣由,記錄下來,方便遇到相同問題的人。
先介紹緣由吧,可能你們都知道,npm 是 node 包管理器的簡稱(node package manager),在咱們安裝 node 的時候會一併安裝。正常狀況下,咱們安裝的 node 在 /usr/local/bin
目錄下,而 npm 在 /usr/local/lib/node_modules
目錄下,而後咱們經過 npm 的全局命令安裝的模塊也在 /usr/local/bin
目錄下(例如 npm install vue-cli -g
),平時咱們在終端裏使用的 node --vesion
或者 vue --version
這種命令其實調用的就是 /usr/local/bin
中的命令。而咱們使用 npm uninstall vue-cli -g
命令卸載 vue-cli 模塊的時候,也是在這個目錄去找,去卸載。
可是若是咱們在已經安裝 vue 的狀況下再安裝 nvm(node 版本管理器,node version manager),就會出問題,nvm 會改變 npm 全局安裝模塊的路徑,我這邊的路徑變成了 ~/.nvm/versions/node/v10.15.1/bin
,在安裝 nvm 以後我再使用 npm 的全局安裝命令安裝的模塊全都在這個目錄下。那麼咱們使用 npm uninstall vue-cli -g
命令去卸載 vue 固然是不會成功的,由於它是在 ~/.nvm/versions/node/v10.15.1/bin
目錄去卸載,而咱們的 vue 安裝在 /usr/local/bin
目錄下。
那麼知道了緣由以後,就得解決問題了,下面的方法可能不是最好的,你們能夠探索更好的方法。vue
/usr/local/lib/node_modules
目錄(謹慎選擇,由於這個目錄下可能還有其餘地方用到的模塊):sudo rm -rf /usr/local/lib/node_modules/usr/local/bin
下的 node:sudo rm /usr/local/bin/node/usr/local/bin
下的 vue:sudo rm /usr/local/bin/vue~/.nvm
目錄:sudo rm ~/.nvm~/.bash_profile
文件:vi ~/.bash_profile刪除 .bash_profile 文件中跟 nvm 有關的部分:node
export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm [[ -r $NVM_DIR/bash_completion ]] && \. $NVM_DIR/bash_completion
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash
nvm install --lts
npm install -g @vue/cli
這時候使用 vue --version
看到的應該是 3.x 的版本了。而這些命令所在的目錄如今都是 ~/.nvm/versions/node/v10.15.1/bin
。提示一下,要想看一個命令所在的目錄,可使用 which 命令,好比說 which vue
、which node
,就會顯示命令所在的目錄。
最後,經過公衆號「極課助手」去購買「極客時間」全部課程,能夠得到高額返現,最高可返 51 元,若是想了解更多技術知識,能夠關注「極課助手」公衆號。git
參考文獻:github