2012-03-06 126 views
191

我在Windows上學習nodejs。幾個模塊全局安裝在npm.cmd中,而nodejs無法找到已安裝的模塊。以玉例如,Nodejs在Windows上找不到已安裝的模塊?

npm install jade -g 

玉安裝在目錄"C:\Program Files (x86)\nodejs\node_modules",但下面的代碼將失敗,"Cannot find module 'jade'"錯誤,

var jade = require('jade'); 

但是,代碼就會成功運行時,將安裝在本地玉(在npm中沒有-g選項)。我不想使用本地安裝的模塊,這對我來說是浪費磁盤空間,有人可以幫助我使全局安裝的模塊在Windows上工作嗎?

+0

http://stackoverflow.com/questions/15471965/what-will-be-the-difference-in-requiremypackage-js-and-requiremypackage/15471995#15471995 – 2013-03-26 05:30:22

+0

@AmolMKulkarni:不知道如何是與此有關。在需求中添加'.js'並不能解決Windows上的問題。 – 2014-02-12 12:50:06

+1

@DanDascalescu:我想你誤解了答案。該答案中給出的代碼是Node.js的代碼,它顯示了它如何查找所需的包。因此,如果您瞭解在何處以及如何查找文件,則可以更輕鬆地解決您的問題。 – 2014-02-13 10:24:34

回答

272

添加一個名爲NODE_PATH的環境變量並將其設置爲%USERPROFILE%\Application Data\npm\node_modules(Windows XP),%AppData%\npm\node_modules(Windows 7/8/10)或npm最終在您的Windows風格上安裝模塊的位置。要完成此操作,請將此作爲系統變量添加到「系統屬性」對話框的「高級」選項卡中(運行control.exe sysdm.cpl,System,3)。在Windows 7+

快速解決方法就是運行:

rem for future 
setx NODE_PATH %AppData%\npm\node_modules 
rem for current session 
set NODE_PATH=%AppData%\npm\node_modules 

值得一提的是在節點的應用程序導入模塊時NODE_PATH時才使用。當你想在你的CLI使用全球的裝機量模塊的二進制文件,你還需要將其添加到您的PATH,但沒有node_modules部分(例如%AppData%\npm在Windows 10年7月8日)。


老故事

我非常新的Node.js自己,所以我可以不完全正確的,但根據我的經驗是這樣工作的:

  1. - g不是安裝全局庫的一種方式,它只是將它們放置在系統路徑上的一種方式,因此您可以從命令行調用它們而不寫入它們的完整路徑。它是有用的,例如,然後點應用的轉換本地文件,如 - 如果你安裝它在全球範圍,你可以在任何目錄中使用它。
  2. node.js的本身不看故宮全球目錄,它是使用另一種算法來尋找所需的文件:http://nodejs.org/api/modules.html#modules_file_modules(基本上它的每一個文件夾掃描路徑,從目前開始爲node_modules文件夾,並檢查其)。

詳情請參見類似的問題:How do I install a module globally using npm?

+17

非常感謝,您所提供的鏈接是非常有幫助的,我更清楚現在,雖然模塊搜索算法看起來有點複雜。最後,我使用環境變量NODE_PATH引用全局模塊路徑,'設置NODE_PATH = C:\ Documents和Settings \ devuser的\應用數據\故宮\ node_modules',它按預期工作。這是奇怪的是,全球範圍內安裝的模塊被定位在「%USERPROFILE%\應用數據\故宮\ node_modules」在Windows上,同時,也不能在NODE_PATH引號。 – Cosmore 2012-03-07 07:09:55

+2

很高興爲您提供幫助。沒有改變NODE_PATH打破了標準node.js模塊的路徑,如FS? – 2012-03-07 08:27:41

+0

@beyonddoor任何有關伊萬諾夫的問題? – pilau 2013-07-25 11:02:14

12

我就從這個節點的blog post報價...

In general, the rule of thumb is:

  • If you’re installing something that you want to use in your program, using require('whatever'), then install it locally, at the root of your project.
  • If you’re installing something that you want to use in your shell, on the command line or something, install it globally, so that its binaries end up in your PATH environment variable.

...

Of course, there are some cases where you want to do both. Coffee-script and Express both are good examples of apps that have a command line interface, as well as a library. In those cases, you can do one of the following:

  1. Install it in both places. Seriously, are you that short on disk space? It’s fine, really. They’re tiny JavaScript programs.
  2. Install it globally, and then npm link coffee-script or npm link express (if you’re on a platform that supports symbolic links.) Then you only need to update the global copy to update all the symlinks as well.
+0

感謝soemarko,它也能幫助我 – Cosmore 2012-03-07 07:28:42

+4

'它們很小的JavaScript程序.'其中一些庫肯定不是很小! – UpTheCreek 2016-01-21 09:06:08

+1

@UpTheCreek我相信他指的是磁盤空間範圍內的大小。他們是文本文件。它們客觀上很小。 – 2016-02-16 16:12:11

9

要長話短說,在你的app目錄使用npm link jade

+4

看來'npm link jade'不能在Windows上工作,npm返回錯誤信息如下:'npm ERR!錯誤:NPM鏈接不支持windows' – Cosmore 2012-03-07 06:36:28

+1

現在呢,作爲版本v0.8.9 – 2012-09-24 09:50:45

+0

@beyonddoor:您需要從管理員命令窗口中運行'NPM link'。 – Mrchief 2013-08-23 13:57:00

-3

,如果你使用的是Windows,它需要一些步驟, 1)創建一個名爲包文件。JSON

{ 
    "name": "hello" 
, "version": "0.0.1" 
, "dependencies": { 
    "express": "*" 
    } 
} 

其中你好是軟件包的名稱,*表示最新版本的依賴

2)代碼,您的項目目錄,並運行以下命令

NPM安裝

它安裝的依賴關係

+4

這不會在全球安裝(問題提示)。這將依賴關係拉入應用程序 – bryanmac 2014-02-17 14:10:21

32

如果你在Windows7平臺,也許你應該改變NODE_PATH像這樣: %AppData%\npm\node_modules

+7

它在** appdata \漫遊**在Windows 8以及 – 2014-05-13 15:05:51

+5

%AppData%包含該路徑.. – Juan 2014-09-01 13:32:33

+6

我在Windows 8.1與npm 2.5.1,並且我有我的NODE_PATH設置爲記錄,但它仍然無法找到我安裝的軟件包。思考? – JaKXz 2015-02-26 16:00:24

1

或者,您可以添加到~/.npmrcprefix。我有C:\Program Files\nodejs爲64 Win7。

3

從我expierience與win8.1 NPM安裝在 C:\Users\[UserName]\AppData\Roaming\npm\node_modules 模塊,但dumply搜索他們 C:\Users\[UserName]\node_modules

var jsonminify = require("C:/Users/Saulius/AppData/Roaming/npm/node_modules/jsonminify"); 
20

我知道我可以清醒了殭屍,但我認爲這仍然是一個問題,如果你需要節點模塊的全球訪問在Windows 7你:在通過完整路徑應用

一個簡單的解決方案參考模塊要添加到您的全局變量路徑:

C:\Users\{USER}\AppData\Roaming\npm 

重要:只有這個沒有node_modules部分,我花了半小時看到這一點。

+3

或者,對於Windows 8用戶 %USERPROFILE%\ AppData \ Roaming \ npm – Benson 2015-11-09 23:51:05

+2

感謝關於刪除'node_modules'部分的建議,也在爲此而苦惱! – danguilherme 2016-09-09 18:10:47

5

我就遇到了這個問題,在Windows 7上運行

npm install -g gulp 

以管理員身份同時被登錄爲普通用戶。

解決方案:當執行與普通用戶相同的安裝(不是「以管理員身份運行」爲cmd)一切正常。我想它與默認的安裝和搜索路徑有關。

+1

澄清這一點多一點... 當Node以管理員身份安裝時,它會更新系統路徑以包含對管理員全局節點模塊文件夾的引用。當新用戶全局安裝某些東西時,它會安裝到不同的節點模塊文件夾。安裝節點的用戶以外的每個用戶都需要更新其路徑以包含其全局節點模塊文件夾。 如果您在同一個帳戶上安裝並使用節點,則不需要此操作。 – dpsthree 2015-10-22 15:39:57

+0

Windows 8.1 pro with nodejs v6.9.4,設置路徑運行:C:\ Program Files \ nodejs \ nodevars.bat – Robot70 2017-03-06 14:14:04

8

嘗試添加/編輯環境變量和得出的結論是:

  1. 修改/添加User variables(上框的)代替System variables(下部);否則你必須「以管理員身份運行」才能使其工作。
  2. 附加;%AppData%\npmPath爲了使用它作爲命令行工具(如果支持,如jshintgrunt-cli)。
  3. 創建NODE_PATH並將其設置爲%AppData%\npm\node_modules,以便在腳本中將其安裝到項目目錄中而不將其安裝到require('<pkg_name>')。 (但npm link is suggested這一要求,如果你的工作與OS mklink如Vista和更高版本。)

測試環境:

  • 的Win 7(耳鼻喉科,64位,SP1) Node.js 4.2。4,NPM 12年2月14日
  • 贏8.1(ENT。,64位),Node.js的0.10.30,NPM 1.4.21
3

對於Windows,大家都說你應該設置環境變量和的NodeJS npm模塊,但是你知道爲什麼嗎? 對於某些模塊,他們有命令行工具,安裝完模塊後,有[module] .cmd文件在C:\ Program Files \ nodejs,它用於在window命令中啓動。因此,如果不將包含cmd文件的路徑添加到環境變量%PATH%,則不會通過命令窗口成功啓動它們。

1

我無意中發現這個問題,因爲我想我的新電腦上使用Visual Studio 2015年使用Node.js的與Windows 10.我用Windows 7和8和8.1不再是問題的node.js node.js中找到一個模塊。我使用的是legacy.js 0.10.39,因爲我必須使用這個版本,因爲串口和RFXCOM模塊。

爲窗10的答案是設置在NODE_PATH與C環境變量:\用戶\用戶\ node_modules。

+1

呃,沒有。 (Windows 10在這裏..)我看到一些模塊在'C:\ Users \ User \ node_modules'我看到一些模塊在'C:\ Users \ User \ AppData \ Roaming \ npm \ node_modules'我看到一些模塊'C :\ Users \ User \ node_modules'也位於'C:\ Program Files文件(x86)\ nodejs \ node_modules \ npm \ node_modules'不知道這是怎麼發生的。哪個是哪個,爲什麼他們這樣做? – zipzit 2016-02-27 09:19:00

14

爲了使其在Windows 10我的文件夾%USERPROFILE%\AppData\Roaming\npm添加到我的PATH解決它。有\node_modules追加像這樣:%USERPROFILE%\AppData\Roaming\npm\node_modules\不適合我。

+0

它正在工作.. – 2016-10-27 05:13:57

+3

或者,更簡單地說,'%AppData%\ npm \' – 2017-03-30 08:53:18

+0

男人這很奇怪,工作!字面上,我一直在狩獵這個問題兩天。這是我嘗試過的最晦澀的解決方案,也是第一個有效的解決方案。非常感謝。 – Will 2017-05-11 14:18:43

0

對於Windows 10,我必須在文件夾中本地安裝一飲而盡:

C:\用戶\我的賬戶\應用程序數據\漫遊\故宮\ node_modules

npm install gulp 

這個固定的「一口我的問題無法識別」

4

我有一個可怕的時間獲得全球模塊的工作。最後,我明確地將C:\Users\yourusername\AppData\Roaming\npm添加到系統變量下的PATH變量中。我還需要將此變量放在列表中的nodejs路徑變量之前。

我運行Windows 10

+0

這是唯一的工作對我來說。在Windows 8上運行 – 2017-06-13 10:19:16

1

我有同樣的問題,試圖與npm install -g bower

我想這是因爲節點被其他用戶安裝,不是我安裝亭子。

我卸載了節點,然後重新安裝了它。在安裝過程中,我看到這個文本選項添加到PATH> NPM模塊

消息在節點安裝

enter image description here

節點安裝完畢後,我再次執行npm install -g bower。現在涼亭的作品。

當然不能與自己的用戶,像我這樣的需要,重新安裝節點。解決方案必須通過NODE_PATHPATH變量,其他用戶已經解釋。

這只是爲了說明僅當節點已由其他用戶安裝時(或者如果在安裝期間選項添加到PATH> npm模塊尚未標記),纔會發生此問題。

0

只需從this下載並重新安裝節點,這將解決所有路徑問題。

不要忘記重新啓動您的命令提示符或終端。