2012-11-20 160 views
34

我意識到,當我做了一個node.js模塊的全局安裝(帶-g標誌)節點不能使用該模塊,除非我編寫了整個路徑。node.js模塊路徑

我的意思是,這並不工作,如果模塊已在全球安裝:

cheerio = require('cheerio'), 

我必須寫:

cheerio = require('/usr/lib/node_modules/cheerio'), 

我怎麼能告訴節點,它已經在正確的路徑中尋找模塊?

謝謝。

+5

節點,測試以.json。所以在部署期間,您可以上傳源代碼並在服務器中爲模塊執行npm install或部署整個項目文件夾。 好處是不會有依賴關係來照顧不同的項目。我將集中lib的PHP Java而不是節點。 – wayne

回答

46

在一般情況下,我會建議讓故宮給你的路徑,並設置如上所述:

$ echo 'export NODE_PATH="'$(npm root -g)'"' >> ~/.bash_profile && . ~/.bash_profile 
+0

我猜如果你在'npmrc'配置文件中有'loglevel = info'(或者其他任何詳細信息),這將不起作用,所以要注意那個。將'$(npm root -g)'更改爲'$(npm root -g 2>/dev/null)'可能會更好,但這仍然不是通用的,因爲只有某些shell遵循STDERR重定向的語法。 – BotNet

+0

'-bash:/Users/abc/.nvm/nvm.shexport:沒有這樣的文件或目錄' –

+1

不要這個命令它會殺死你的NVM! –

15

您可以添加以下到〜/ .bash_profile:

export NODE_PATH=/usr/lib/node_modules:$NODE_PATH 
+3

請參閱http://nodejs.org/api/modules.html#modules_loading_from_the_global_folders –

6

適用人羣與ZSH安裝:

echo 'export NODE_PATH="'$(npm root -g)'"' >> ~/.zshrc && . ~/.zshrc

14

對於那些在Windows PLA TForm的系統變量添加到您的PATH:

C:\Users\<username>\AppData\Roaming\npm 

PS:我們大多數人(或某些)項目文件夾中安裝模塊通過將模塊作爲軟件包的依賴在Windows 8.1

+2

您必須在Users \和\ AppData之間包含「UserName」。這個配置應該包含在你的usser系統變量中。然後你需要關閉會話並重新啓動以查看控制檯中的更改 – edrian

+0

在我的情況下,運行Windows 8.1時,它是'npm-cache'而不是'npm'。 –

+1

@edrian在原始答案中實際上有一個佔位符,但是由於沒有將其標記爲代碼,「標記」被刪除。現在已修復 –