Windows上安裝NVM之後找不到NPM的解決辦法

  不久前自己工作的電腦上Node.js升級了,導致有一個依賴的項目無法正常啓動,於是到Google上搜了一把,找到stackoverflow上的一個解決辦法。基本意思是說當前的Node.js版本和gulp 3不兼容,要麼將gulp升級到4,要麼將Node.js降回到原來的版本。於是忽然想到之前在Ubuntu上安裝過NVM,Windows上應該也有對應的版本,於是在github上搜了一下,果然有專門針對Windows的版本

  下載安裝後,可以直接通過NVM命令在同一臺電腦上安裝多個不同版本的Node.js,而且可以隨意切換版本。

  但是通過nvm use命令使用指定的Node.js版本之後,發現無法使用npm命令。

  按照錯誤描述,應該是在對應的目錄中沒有找到npm-cli.js這個文件。於是去NVM的安裝路徑下(通常爲c:\users<your user>\AppData\Roaming\nvm)查看了一下。

  NVM將所有安裝的Node.js的不同版本存放在這個目錄下,當使用nvm use命令時,會將對應版本的Node.js目錄中的內容拷貝到C:\Program Files\nodejs目錄中,從而達到切換不同Node.js版本的目的。但是這個目錄下的node_modules目錄是空的!怎麼回事?

  通過搜索,我找到在github上的nvm-windows的issues中也有人在問同樣的問題。基本意思就是說npm的倉庫已經從https://github.com/npm/npm移到https://github.com/npm/cli了,但是NVM v1.1.7並沒有做相應的調整,所以通過nvm install安裝Node.js時對應的npm實際上並沒有安裝成功,不過NVM此時並沒有報告任何錯誤,而是仍然顯示已安裝成功。

  既然這是NVM自身的問題,那我們只能通過手動的方法來修復。從Node.js官網下載對應版本的壓縮包,將其中node_modules目錄下的內容拷貝到NVM目錄下對應Node.js安裝目錄中的node_modules中。如果NVM目錄下有多個Node.js版本,則需要手動拷貝每個Node.js版本中node_modules目錄的內容。

  如https://nodejs.org/download/release/v11.15.0/是Node.js v11.15.0版本的下載地址。下載之後打開壓縮包,將其中的node_modules/npm目錄解壓並拷貝到NVM目錄下對應Node.js下的node_modules目錄中。

  再次使用nvm use命令切換不同版本的Node.js,然後在命令行通過node -v查看當前Node.js版本,同時輸入npm看看該命令是否有效。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章