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
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
.
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.
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.
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
mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
export PATH=~/.npm-global/bin:$PATH
source ~/.profile
npm install -g awsmobile-cli
awsmobile configure
Fügen Sie die folgende Zeile zu Ihrem ~/.bash_profile
hinzu
export PATH="$HOME/.npm/bin:$PATH"
Laden Sie das Bash-Profil
bash -l
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.
Das Problem, das ich hatte, war die Binärdateien fehlten , weil die benutzerspezifische .npmrc -Datei in meinem Home-Verzeichnisbin-links
auf 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.