2012-02-03 11 views
13

mam zainstalowane NVM dla node.js korzystających z instrukcjami z tego postu:Wersja Node Manager (NVM) npm instalowania modułów do wspólnego folderu

http://www.backdrifter.com/2011/02/18/using-nvm-and-npm-to-manage-node-js/

Kiedy przełączać się między wersjami węzłów, a następnie użyć NPM aby zainstalować moduł, wszystkie moduły są umieszczane w tym samym folderze 'node_modules' (~/node_modules /) zamiast w katalogu 'node_modules' specyficznym dla tej wersji węzła?

Każdy pomysł, jak temu zaradzić?

Odpowiedz

29

Na podstawie uwag https://github.com/creationix/nvm/pull/97:

Podczas instalowania pakietów z KMP pomocą przełącznika globalnego -g pakiet kończy się w odpowiednim katalogu (tj .nvm/$ WERSJA/lib/node_modules) , jednak węzeł nie może go wymagać , ponieważ jakoś nie szuka jego prefiksu.

Więc za pomocą npm install -g xxxxx położy modułów w odpowiedniej lokalizacji dla NVM ale jeśli spróbujesz require jednego z nich węzeł nie może znaleźć modułu. Nadal się z tym bawię i zaktualizuję, jeśli znajdę rozwiązanie.

Aktualizacja

Skąd NPM umieścić node_modules? (zobacz https://docs.npmjs.com/files/folders)

  • Instalacja lokalna (domyślnie): umieszcza elementy w ./node_modules bieżącego katalogu głównego.
  • Instalacja globalna (z opcją -g): umieszcza elementy w/usr/local lub wszędzie tam, gdzie jest zainstalowany węzeł.
  • Zainstaluj go lokalnie, jeśli zamierzasz go ustawić na require().
  • Zainstaluj go globalnie, jeśli zamierzasz uruchomić go w wierszu poleceń.
  • Jeśli potrzebujesz obu, zainstaluj go w obu miejscach lub użyj npm link.

Więc co zrobiłem było uruchomić npm init (patrz http://npmjs.org/doc/init.html) w moich projektów głównego katalogu, który wygenerował package.json. Teraz, gdy uruchamiam npm install xxxxx, tworzy on katalog node_modules w moim folderze projektu (który dodaję do mojego .gitignore). Działa to w przypadku modułów, których wymagam w moim kodzie.

Dla poleceń, takich jak CoffeeScript, instaluję z npm install -g coffee-script, który umieszcza go we właściwym katalogu (.nvm/$ VERSION/lib/node_modules). Chociaż nie mogę wymagać tych modułów (npm link powinien rozwiązać ten problem) mogę uruchamiać polecenia - tj. coffee.

+0

Nareszcie dobra odpowiedź na to pytanie, waliłem w to przez chwilę. –

1

Po prostu zainstalowałem ekspresowo globalnie (-g) i miałem problem w razie potrzeby ("ekspresowe"). Tak jak Jesse Vogt powiedział, że po prostu ponownie zainstalowałem ekspres, ale tym razem bez opcji -g: "sudo npm install express", a teraz działa idealnie!

+0

Czy możesz wyjaśnić, dlaczego to zadziałało? –

+0

Szczerze mówiąc z tobą; Nie wiem, jestem bardzo początkująca z tym. Jednak surfowanie po Internecie pozostawione przez Jesse (https: //docs.npmjs.com/getting-started/installation-npm-packages-locally) Znalazłem: "Jeśli chcesz polegać na pakiecie z własnego modułu, używając czegoś takiego jak Node, to musisz zainstalować lokalnie ..." Nie bardzo rozumiem różnicę, ale na pewno, jeśli musisz użyć require() do uruchomienia serwera, musisz zainstalować lokalnie (bez/-y), ponieważ to działa dla mnie. –

+0

Dziękuję za opracowanie :) –

Powiązane problemy