Ich habe ein Problem bei 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 Verknüpfungsproblem 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 den direkten Linkspeicherort ausführe, um ihn auszudrücken, funktioniert er:
$ /usr/local/share/npm/bin/express myapp
create : myapp
create : myapp/package.json
create : myapp/app.js
... Builds app correctly
Wo sich das Modul befindet:
$ 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_profile habe ich:
export PATH=/usr/local/bin:$PATH
export NODE_PATH=/usr/local/lib/node_modules:/usr/local/lib/node
Muss ich meine Knotenumgebung ändern, um sie in den richtigen Ordner herunterzuladen? 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
express
.bin
installiert ist, lautet mein Pfad, den ich in .bash_profile festgelegt habe:export PATH=$PATH:/usr/local/Cellar/node/10.5.0/bin
Antworten:
Fügen Sie
/usr/local/share/npm/bin
IhremPATH
(z.bashrc
. B. in ) hinzu.Weitere Informationen finden Sie unter
npm help npm
:Sie finden das Installationspräfix mit
npm get prefix
odernpm config list | grep prefix
.quelle
$HOME/.npm
Sudo mit nvm? Sollte der Pfad nicht zum .bash_profile oder .bashrc sein? Ich benutze nvm, also möchte ich sicherstellen, dass ich die Dinge nicht überkreuze.Dies kann bedeuten, dass Ihr Knoteninstallationspräfix nicht Ihren Erwartungen entspricht.
Sie können es so einstellen:
npm config set prefix /usr/local
Versuchen Sie dann
npm install -g
erneut zu laufen , und es sollte funktionieren. Hat für mich auf einem Mac gearbeitet und die Lösung kommt von dieser Seite:http://webbb.be/blog/command-not-found-node-npm/
BEARBEITEN: Beachten Sie, dass ich auf einem neuen Mac, den ich gerade einrichte, gerade wieder darauf gestoßen bin und den hier beschriebenen Prozess auch im Stackoverflow ausführen musste .
quelle
nodenv
und es gibt höchstwahrscheinlich einen besseren Weg, um dieses Problem für meinen Fall zu lösen. Ihre Lösung funktionierte jedoch als schnelle und schmutzige Lösung! Ich habe dann das Präfix wieder auf dasnodenv
Präfix umgestellt und konnte das Paket von der ausführen/usr/local path
. Vielen Dank!/Users/(username)/.npm-global
obwohl ich alles neu installiert habe. Ich bin auch auf einem MacMein npm konnte auch keine globalen Pakete finden. Ich habe getan, was Brad Parks vorgeschlagen hat:
Dann habe ich einen EACCES-Berechtigungsfehler erhalten (NICHT VERWENDEN
sudo npm install -g <package>
) und ihn über die offiziellen npm-Dokumente behoben: https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globallymkdir ~/.npm-global
npm config set prefix '~/.npm-global'
export PATH=~/.npm-global/bin:$PATH
quelle
export PATH=~/.npm-global/bin:$PATH
Zeile in der Datei ~ / .profile befindet . Sie erhalten einen Fehler?In meinem Fall war die Umgebungsvariable NODE_PATH leer. Überprüfen Sie, ob es leer ist.
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 installiert sind
npm root -g
quelle
Ich installiere niemals 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 der Benutzerentwicklung ist und nicht jeder über Root-Zugriff verfügt und die Installation von Root / Sudo-Dingen wie diesen nur die Dinge zu Beginn durcheinander bringt 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 verwende 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.Legen Sie Ihr Präfix fest,
.npm-packages
falls dies noch nicht geschehen ist. (Beachten Sie, 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 vorlesen möchten, 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 Wege ab. Für zB, wenn Sie schlucken wie folgt installieren
npm install -g gulp
symbolisch verlinkt es in~/.npm-packages/bin
(Anmerkung , das ist ein Bindestrich, nicht ein Unterstrich). (keine Notwendigkeit fürgulp-cli
odergulp-cl
)Sie können so ziemlich alle anderen Knotenpfadexporte ersetzen / auskommentieren. Sie können diese Pfadinformationen sicher unter alle anderen Pfadinformationen setzen, die Sie bereits haben, ohne dass diese Informationen überschrieben werden.
quelle
Fügen Sie die folgende Zeile zu Ihrem hinzu
~/.bash_profile
export PATH="$HOME/.npm/bin:$PATH"
Bash-Profil laden
quelle
Für Windows-Benutzer
Fügen Sie dies Ihrem Pfad hinzu: "% AppData% \ npm"
quelle
Das Problem, das ich hatte, war das Fehlen der Binärdateien, da die benutzerspezifische .npmrc- Datei in meinem Home-Verzeichnis auf
bin-links
eingestellt warfalse
, obwohl diedefault is true
.Nur für den Fall, dass dies Ihr Problem ist, überprüfen Sie, ob in keiner Ihrer .npmrc-Dateien false festgelegt ist.
Wenn Sie dann alle Module neu installieren, werden die Binärdateien am erstellt,
prefix
damit SiePATH
sie sehen können.quelle
Überprüfen Sie den Binärordner Ihres globalen Knotenmoduls und fügen Sie ihn Ihrem $ PATH hinzu.
npm list -g | head -1
Wenn Sie nodenv verwenden, ändert sich der Pfad bei jeder Installation der globalen Knotenversion. Das Hinzufügen eines solchen Pfades löst mein Problem.
"$HOME/.nodenv/versions/$(nodenv global)/bin"
Verknüpfung zum Hinzufügen des Pfads zu zsh
$ echo 'export PATH="$HOME/.nodenv/versions/$(nodenv global)/bin"' >> ~/.zshrc
quelle