2012-11-20 4 views
34

Ich erkannte, dass, wenn ich eine globale Installation eines Moduls node.js (mit dem Flag -g) Knoten konnte nicht dieses Modul verwenden, es sei denn, ich schrieb den gesamten Pfad.node.js Module Pfad

Ich meine, das funktioniert nicht, wenn das Modul weltweit installiert wurde:

cheerio = require('cheerio'), 

Ich habe das schreiben:

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

Wie kann ich sagen, zum Knoten dass es zu Suchen Sie nach den Modulen im richtigen Pfad?

Vielen Dank.

+5

für Knoten, die meisten von uns (oder etwas) installiert Modul im Projektordner durch das Modul als Abhängigkeiten in Paket Hinzufügen .json. Während der Bereitstellung können Sie einfach Ihren Quellcode hochladen und npm install für das Modul auf dem Server installieren oder den gesamten Projektordner bereitstellen. Der Vorteil ist, dass es keine Abhängigkeit geben wird, um für verschiedene Projekte zu sorgen. Ich werde lib für PHP Java, aber nicht Knoten zentralisieren. – wayne

Antwort

46

Im Allgemeinen würde ich vorschlagen zu lassen npm geben Sie den Pfad und festgelegt, dass, wie oben erwähnt:

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

Ich schätze, das würde nicht funktionieren, wenn Sie 'loglevel = info' (oder irgendetwas Ausführliches) in Ihrer 'npmrc'-Konfiguration haben, seien Sie also vorsichtig davon. Wahrscheinlich wäre es besser, '$ (npm root -g)' in '$ (npm root -g 2>/dev/null)' zu ändern, aber das ist immer noch nicht universell, da nur bestimmte Shells diese Syntax für die STDERR-Umleitung berücksichtigen . – BotNet

+0

'-bash: /Users/abc/.nvm/nvm.shexport: Keine solche Datei oder dieses Verzeichnis' –

+1

NICHT DIESES BEFEHL ES TÖTET IHREN NVM !!! –

15

können Sie fügen Sie folgendes zu ~/.bash_profile:

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

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

6

Für Menschen mit ZSH installiert:

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

14

Für diejenigen in Windows pla TForm fügen Sie diese zu Ihrer PATH in Systemvariablen:

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

PS: Getestet unter Windows 8.1

+2

Sie müssen "UserName" zwischen Users \ und \ AppData einfügen. Diese Konfiguration sollte in Ihren Benutzer-Systemvariablen enthalten sein. Dann müssen Sie schließen Sitzung und Neustart für die Änderungen in der Konsole zu sehen – edrian

+0

In meinem Fall Windows 8.1, war es "npm-Cache" und nicht nur "npm". –

+1

@edrian Es gab tatsächlich einen Platzhalter in der ursprünglichen Antwort, aber weil es nicht als Code markiert wurde, wurde das "Tag" entfernt. Das ist nun behoben –