在使用npm的時候,或者是通過npm下載了一些包,使用這些包的時候,有時候會遇到“npm 不是內部或外部命令”,或者“XXX 不是內部或外部命令”。這種情況一般都是由於安裝node.js的時候,環境變量沒有配置好。這里把如何配置環境變量做個筆記,以供參考。
一、安裝node
npm是nodejs的一個子內容,所以要使用npm,就一定要先安裝nodejs。安裝方法其實沒啥好說的,完全傻瓜化的,官網上下載安裝包,一路next就完了。
安裝完了如何判斷自己是否安裝成功呢?
你只需要在命令行窗口中輸入命令:
node -v //查看node 的版本號
npm -v //查看npm的版本號
只要有輸出版本號,就說明你安裝成功了。如下圖所示:
需要注意的是,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 "F:\nodejs\node_global" npm config set cache "F:\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工具了
