[英]Installing Node.js (and npm) on Windows 10
我在嘗試在 Windows 10 上安裝 Node 時遇到了一些問題並找到了解決方案。
錯誤如下:
C:\用戶\斯蒂芬>npm
錯誤:ENOENT,stat 'C:\Users\Stephan\AppData\Roaming\npm'
解決方案如下。
編輯:似乎新安裝程序不再有這個問題,請參閱Parag Meshram的這個答案,因為我的答案現在可能已經過時了。
原答案:
嚴格按照以下步驟操作:
C:\Program Files\nodejs
PATH
並選擇對其進行編輯。 如果 PATH 變量為empty
,請將其更改為: C:\Users\{YOUR USERNAME HERE}\AppData\Roaming\npm;C:\Program Files\nodejs
如果 PATH 變量已經包含C:\Users\{YOUR USERNAME HERE}\AppData\Roaming\npm
,請在后面附加以下內容: ;C:\Program Files\nodejs
如果 PATH 變量包含信息,但沒有關於 npm 的信息,請將其附加到 PATH 的末尾: ;C:\Users\{YOUR USERNAME HERE}\AppData\Roaming\npm;C:\Program Files\nodejs
現在 PATH 變量設置正確,您仍然會遇到錯誤。 手動進入AppData目錄,你會發現Roaming里面沒有npm目錄。 手動創建此目錄。
重新啟動命令提示符,npm 現在可以工作了。
除了@StephanBijzitter 的答案之外,我還會使用以下PATH
變量:
%appdata%\npm
%ProgramFiles%\nodejs
所以你的新PATH
看起來像:
[existing stuff];%appdata%\npm;%ProgramFiles%\nodejs
這具有既不依賴於用戶也不依賴於 32/64 位的優點。
新安裝程序(從https://nodejs.org下載的 .msi)具有“添加到 PATH”選項。 默認情況下,它被選中。 確保將其選中。
一切都應該安裝在 %appdata% (C:\Users\\AppData\Roaming) 中,而不是“程序文件”中。
這就是為什么...
默認的 MSI 安裝程序將 Node 和它附帶的 NPM 放在“程序文件”中並將其添加到系統路徑中,但它將 NPM 的用戶路徑設置為 %appdata% (c:\users[username]\appdata\roaming ) 因為用戶沒有足夠的權限來寫入“程序文件”。
當所有模塊都進入 %appdata% 時,這會造成混亂,並且當您升級 NPM 本身時(NPM 自己建議您立即執行此操作)您最終會得到兩個副本:由於 NPM 無法擦除原始仍然在“程序文件”中那,還有新一號旅館%appdata%。
更糟糕的是,如果您錯誤地以管理員身份執行 NPM 操作(在 Windows 上比在 *nix 上容易得多),那么它將在 NPM node_modules 的“程序文件”副本上運行。 可能是一個真正的混亂。
因此,當您運行安裝程序時,只需將其指向 %appdata% 並避免所有這些。
請注意,這並不是什么奇怪的事情——如果您只使用用戶權限運行安裝程序,就會發生這種情況。
您應該以管理員身份運行安裝程序。
我遇到了同樣的問題,幫助我們在安裝節點時將我的防病毒保護關閉了 10 分鍾,它就像一個魅力一樣工作。
您必須修改 AppData 的原因可能是:
即使這樣做了,最新的 LTE (4.4.4) 仍然存在 Windows 10 的問題,它工作了一段時間,然后每當我嘗試:
$ npm install _some_package_ --global
節點拋出“FATAL ERROR CALL_AND_RETRY_LAST Allocation failed - process out of memory”錯誤。 仍然嘗試找到解決該問題的方法。
我發現唯一可行的方法是運行 Vagrant 或 Virtual box,然后運行 Linux 命令行(必須匹配路徑),這是一個相當混亂的解決方案。
我遇到了同樣的問題,但是在嘗試了這篇文章的所有內容后都沒有成功,我只需要重新啟動。 所以如果你安裝后沒有試過重啟電腦,試試看。
安裝后重新啟動計算機
對我來說,我不得不刪除 \program 文件中的 nodejs 文件夾,然后當我通過 msi 進行安裝時,它就可以工作了。 好像當我卸載 Node 時它實際上並沒有刪除這個文件
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.