wake-up-neo.com

Globale Knotenmodule werden nicht korrekt installiert. Befehl nicht gefunden

Ich habe ein Problem mit der Installation globaler Knotenmodule, und alles, was ich online finde, besagt, dass die Lösung nur -g hinzufügt. Welches ist nicht das Problem. Ich glaube, es ist ein Verbindungsproblem oder ein falsches Verzeichnisproblem. 

Folgendes mache ich:

$ npm install -g express
npm http GET https://registry.npmjs.org/express
npm http 304 https://registry.npmjs.org/express
npm http GET https://registry.npmjs.org/range-parser/0.0.4
npm http GET https://registry.npmjs.org/mkdirp/0.3.3
...downloads correctly

$ express myapp
bash: express: command not found

Wenn ich jedoch die direkte Verknüpfungsposition zum Ausführen ausführe, funktioniert es:

   $ /usr/local/share/npm/bin/express myapp

   create : myapp
   create : myapp/package.json
   create : myapp/app.js
... Builds app correctly

Wo ist das Modul: 

$ which node
/usr/local/bin/node
$ node -pe process.execPath
/usr/local/Cellar/node/0.8.20/bin/node
$ npm link express
/Users/bentonrr/Development/Personal/node_modules/express -> /usr/local/share/npm/lib/node_modules/express

In meinem .bash_profil habe ich:

export PATH=/usr/local/bin:$PATH
export NODE_PATH=/usr/local/lib/node_modules:/usr/local/lib/node

Muss ich meine Knotenumgebung zum Herunterladen in den richtigen Ordner ändern? Ist etwas nicht richtig verlinkt? Ich bin verloren.. 

Vielen Dank!

Andere Spezifikationen:

$ node --version
v0.8.20
$ npm --version
1.2.11
$ brew --version
0.9.4
OSX Version 10.8.2
46
im_benton

Fügen Sie /usr/local/share/npm/bin zu Ihrer PATH hinzu (z. B. in .bashrc).

Weitere Informationen finden Sie unter npm help npm:

globaler Modus: npm installiert Pakete im Installationspräfix unter prefix/lib/node_modules und Bins werden in prefix/bin installiert.

Sie finden das Installationspräfix mit npm get prefix oder npm config list | grep prefix.

46
Tim Smith

Dies kann bedeuten, dass das Installationspräfix Ihres Knotens nicht Ihren Erwartungen entspricht.

Sie können es wie folgt einstellen:

npm config set prefix /usr/local

versuchen Sie dann erneut, npm install -g auszuführen, und es sollte funktionieren. Arbeitete für mich auf einem Mac, und die Lösung kommt von dieser Seite:

http://webbb.be/blog/command-not-found-node-npm/

BEARBEITEN: Beachten Sie, dass ich das gerade auf einem neuen Mac, den ich gerade aufbaue, gerade wieder gefunden habe und den Prozess hier detailliert auf stackoverflow ausführen muss.

86
Brad Parks

Ich installiere niemals irgendwelche npm-Sachen über Sudo! Ich habe meine eigenen Gründe, aber ich versuche nur, die Dinge einfach und benutzerbasiert zu halten, da dies eine Welt für die Benutzerentwicklung ist und nicht jeder über Root-Zugriff verfügt und die Installation von root/Sudo auf diese Weise die Dinge von Anfang an unübersichtlich zu machen scheint mit. Schließlich sollten alle Entwickler in der Lage sein, diese Anweisungen zu befolgen, nicht nur privilegierte Sudo-Benutzer.

Dieses spezielle System ist ein RHEL7, auf das über SSH zugegriffen wird:

Häufig benötigt man verschiedene Versionen von Node, daher benutze ich NVM https://github.com/creationix/nvm

Vor diesem Hintergrund kann ich Ihnen ein funktionierendes Beispiel für -g Globale Installationen zeigen, bei denen NVM-, NPM- und Knotenpfade ohne root verwendet werden.

stellen Sie Ihr Präfix für .npm-packages ein, falls dies noch nicht geschehen ist. (Anmerkung, das ist ein Bindestrich, kein Unterstrich)

nvm config ls
prefix = "/home/<yourusername>/.npm-packages"

Passen Sie dann Ihr ~/.bash_profile oder .bashrc an, wenn Sie möchten lesen Sie nach, warum und was hier mit den folgenden Informationen.

#PATH EXPORTS
NODE_MODULES=$HOME/.npm                                          
NPM_PACKAGES=$HOME/.npm-packages/bin                           
export PATH=$PATH:$HOME/bin:$NODE_MODULES:$NPM_PACKAGES         

#NVM ENABLE                                                 
export NVM_DIR="$HOME/.nvm"                                   
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm 

Das deckt so ziemlich alle Pfade ab. Wenn Sie beispielsweise gulp wie folgt installieren npm install -g gulp, Wird es mit ~/.npm-packages/bin Verknüpft (beachten Sie, dass dies ein Bindestrich und kein Unterstrich ist). (keine Notwendigkeit für gulp-cli oder gulp-cl)

Sie können praktisch alle anderen Knotenpfad-Exporte ersetzen/auskommentieren. Sie können diese Pfadinformationen unter alle anderen Pfadinformationen stellen, die Sie bereits haben, ohne dass diese Informationen überschrieben werden.

4
blamb

Mein npm konnte keine globalen Pakete finden. Ich habe getan, was Brad Parks vorschlug:

npm config set prefix /usr/local

Dann erhielt ich einen EACCES-Berechtigungsfehler (DONT'T USE Sudo npm install -g) und behebte ihn durch die offiziellen npm-Dokumente: https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing -pakete-global

  1. Erstellen Sie in der Befehlszeile in Ihrem Basisverzeichnis ein Verzeichnis für globale Installationen:
 mkdir ~/.npm-global
  1. Konfigurieren Sie npm für die Verwendung des neuen Verzeichnispfads:
 npm config set prefix '~/.npm-global'
  1. Öffnen oder erstellen Sie in Ihrem bevorzugten Texteditor eine ~/.profile-Datei und fügen Sie diese Zeile hinzu:
 export PATH=~/.npm-global/bin:$PATH
  1. Aktualisieren Sie in der Befehlszeile Ihre Systemvariablen:
 source ~/.profile
  1. Dann installiere ein Paket global und teste es! Zum Beispiel:
npm install -g awsmobile-cli
awsmobile configure

0
Vicente
  1. Fügen Sie die folgende Zeile zu Ihrem ~/.bash_profile hinzu

    export PATH="$HOME/.npm/bin:$PATH"
    
  2. Laden Sie das Bash-Profil

    bash -l
    
0
Lasithds

In meinem Fall war die Umgebungsvariable NODE_PATH leer. Überprüfen Sie, ob es leer ist.

echo $NODE_PATH

wenn der NODE_PATH leer ist. Ändern Sie dann ~/.bash_profile und fügen Sie NODE_PATH hinzu

nano ~/.bash_profile
export NODE_PATH=`npm root -g`
source ~/.bash_profile

Installieren Sie nun die npm Module erneut und prüfen Sie, ob diese im Pfad npm root -g installiert werden.

0
lazyTank

Das Problem, das ich hatte, war die Binärdateien fehlten , weil die benutzerspezifische .npmrc -Datei in meinem Home-Verzeichnisbin-linksauf false gesetzt war, obwohl der default is true.

Falls dies Ihr Problem ist, überprüfen Sie, ob in Ihren .npmrc-Dateien der Wert false festgelegt ist.

Wenn Sie anschließend alle Module erneut installieren, werden die Binärdateien in der prefix erstellt, sodass Ihre PATH sie sehen kann.

0
dimpen