2012-11-20 13 views
34

Uświadomiłem sobie, że kiedy wykonałem globalną instalację modułu node.js (z flagą -g), węzeł nie mógł użyć tego modułu, chyba że napisałem całą ścieżkę.Ścieżka modułów node.js

Znaczy, to nie zadziała, jeżeli moduł został zainstalowany globalnie:

cheerio = require('cheerio'), 

muszę napisać, że:

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

Jak mogę powiedzieć do węzła, który ma na poszukaj modułów na właściwej ścieżce?

Dziękuję.

+5

dla węzła, większość z nas (lub kilka) zainstalować moduł w folderze projektu poprzez dodanie modułu jako zależności w opakowaniu .json. więc podczas wdrażania możesz po prostu wgrać swój kod źródłowy i zrobić npm install dla modułu na serwerze lub wdrożyć cały folder projektu. Zaletą jest brak zależności od dbania o różne projekty. Zrobię centralizację lib dla php java, ale nie dla węzła. – wayne

Odpowiedz

46

Generalnie chciałbym zaproponować pozwalając npm daje ścieżkę i ustawić, że jak wspomniano powyżej:

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

Zgaduję, że to nie zadziała, jeśli masz 'loglevel = info' (lub cokolwiek gadatliwego) w konfiguracji' npmrc', więc bądź uważny tego. Prawdopodobnie lepiej byłoby zmienić '$ (npm root -g) na' $ (npm root -g 2>/dev/null) ', ale to nadal nie jest uniwersalne, ponieważ tylko niektóre powłoki honorują tę składnię dla przekierowania STDERR . – BotNet

+0

'-bash: /Users/abc/.nvm/nvm.shexport: Brak takiego pliku lub katalogu' –

+1

NIE NINIEJSZA KOMENDA TO ZABIJE SWÓJ NVM !!! –

15

Można dodać następujące ~/.bash_profile:

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

Zobacz http://nodejs.org/api/modules.html#modules_loading_from_the_global_folders –

6

dla ludzi z zsh zainstalowane:

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

14

Dla tych w systemie Windows PLA TForm dodać do PATH w zmiennych systemowych:

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

PS: Testowane na Windows 8.1

+2

Musisz uwzględnić "UserName" między Users \ and \ AppData. Ta konfiguracja powinna być zawarta w zmiennych systemowych ussera. Następnie musisz zamknąć sesję i ponownie uruchomić, aby zobaczyć zmiany w konsoli – edrian

+0

W moim przypadku, z systemem Windows 8.1, był to "npm-cache", a nie tylko "npm". –

+1

@edrian rzeczywiście w pierwotnej odpowiedzi pojawił się symbol zastępczy, ale z powodu nie oznaczenia go jako kodu usunięto "tag". To jest teraz naprawione –

Powiązane problemy