解決“npm不是內部或外部命令“

在使用npm的時候,或者是通過npm下載了一些包,使用這些包的時候,有時候會遇到“npm 不是內部或外部命令”,或者“XXX 不是內部或外部命令”。這種情況一般都是由於安裝node.js的時候,環境變量沒有配置好。這裏把如何配置環境變量做個筆記,以供參考。

  一、安裝node

  npm是nodejs的一個子內容,所以要使用npm,就一定要先安裝nodejs。安裝方法其實沒啥好說的,完全傻瓜化的,官網上下載安裝包,一路next就完了。

  需要注意的是,nodejs的默認安裝路徑是C:\Program Files\nodejs。但是我們往往不想把軟件都安裝到C盤。比如我需要把nodejs安裝到F盤,那麼除了在安裝時要選擇自己的安裝路徑,接下來一定要做一定的配置,因爲你的安裝目錄變了,如果還沿用默認的一些安裝的參數,那麼就容易出現問題,導致npm或者你下載的包無法使用

  二、配置

  假設,我把nodejs的安裝根目錄設置爲F:\nodejs。那麼,安裝完畢後,我們看到該目錄下有這些文件

  

  除了這個目錄,其實在C盤的另外一個目錄下,還有一個附帶生成的目錄【C:\Users\用戶名\AppData\Roaming\npm】,這個目錄是用來存放你通過npm全局安裝的包。比如,如果你通過“npm i nrm -g”全局下載nrm這個工具,那麼下載的文件就會被保存到“【C:\Users\用戶名\AppData\Roaming\npm】”這個目錄下。

  既然nodejs的安裝目錄都不想放到C盤,那麼通過npm下載的包更不想放在C盤。我希望統一管理,把npm全局下載的包都保存到nodejs的根目錄下,也就是“F:\nodejs”這個路徑下。所以我們就必須做一些響應的設置了。

  第一步,在“F:\nodejs”目錄下創建“node_global"和”node_cache"2個子目錄。

  

  其中node_cache是作爲緩存目錄來使用的,node_global就是全局下載文件的目錄。

  接下來要做參數設置,否則,默認的還是往【C:\Users\用戶名\AppData\Roaming\npm】這個目錄下保存全局下載文件。

  第二步、設置參數,指定全局下載文件的目錄

  首先打開命令窗口,然後輸入:  

npm config set prefix "D:\nodejs\node_global"
npm config set cache "D:\nodejs\node_cache"

  這一步就完成了。

  第三步、設置windows操作系統全局環境變量

  這裏先簡單介紹下什麼是系統全局環境變量。我們一般用戶還真很少用它,因爲我們絕大多數的用戶都是使用windows系統的圖形化界面來使用電腦的,很少會用到命令行工具,所以不知道什麼是系統環境變量是很正常的一件事情。

  在我們使用cmd命令窗口時,一般就是要通過一些命令來做一些操作(好像是廢話)。當我們在命令行窗口輸入“dir",點擊回車就會顯示出當前目錄的所有內容。爲什麼命令窗口能認識”dir“這個命令呢?原因是,當我們在cmd命令窗口輸入任何命令,系統首先會在當前目錄下去找,有沒有這個命令對應的可執行程序,如果有,就執行之;如果沒有,系統就會按照windows操作系統的一個叫做”path“的系統環境變量裏去尋找已經設置過的目錄,這個名爲”path“的系統環境變量可以記錄一組,也就是N個路徑,如果輸入的命令不能在當前目錄下找到對應的可執行程序,那麼就會去”path“這個變量裏記錄的所有的目錄下,依次尋找你輸入的命令對應的可執行程序,如果找到了就立刻執行。如果path裏記錄的所有目錄下都沒有找到,那麼就會在命令行下提示你:”XXX 不是內部或外部命令“。

  這下你應該知道環境變量是幹什麼的了吧。接下來就開始設置,這裏以win7系統爲例。

  首先,在桌面”計算機“->"屬性“,打開如下圖所示的界面

  

  然後,按箭頭所示,依次點擊”高級系統設置“->”高級“->”環境變量“。這時打開系統環境變量設置窗口,如下圖所示:

  

  這個窗口分爲上下兩個部分,上半部分是“用戶變量”它只針對當前登錄windows的賬戶起作用。下半部分是“系統變量”,對真個操作系統起作用。

  (1)在系統變量這一欄中,點擊“新建”按鈕,添加一個變量名“NODE_PATH",值爲”F:\nodejs\node_global\node_modules“。如果所示:

  

  然後點擊確定,這一步是關鍵。

  (2)在用戶變量這一部分,找到”path“變量,並修改爲”F:\nodejs\node_global\“,如果用戶變量裏沒有”path“變量,那麼就創建一個。如圖所示:

  

  這一步也非常關鍵,由於我們前面改變了module的默認路徑,這一步如果不設置,那麼就會導致輸入命令出現“xxx不是內部或外部命令”的錯誤。

  OK,到這裏已經設置好了,你可以開心的使用nodejs,以及它附帶的npm工具了

 

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