Ich habe erwähnt, dass meine Anwendung beim Ausführen eine andere Version von NodeJS verwendet sudo
.
$ node -v
v0.10.23
$ sudo node -v
v0.11.8-pre
Dieses v0.11.8-pre hat mir einige Probleme verursacht, daher möchte ich es definitiv nicht verwenden, aber ich kann es nicht für root ändern.
$ sudo nvm use v0.10.23
sudo: nvm: command not found
Ich habe versucht, nvm vom Root-Benutzer zu installieren, habe aber den Fehler "NVM bereits installiert" erhalten, aber nvm wurde beim Ausführen von nicht gefunden sudo
. Was ist mein Problem?
sudo -s
und installieren Sie esnvm
.Antworten:
Die folgende Befehlsliste (Quelle: digitalocean ) scheint das Problem zu beheben
Der obige Befehl ist etwas kompliziert, aber alles, was er tut, ist, die Version des Knotens, die Sie über nvm aktiv haben, in das
/usr/local/
Verzeichnis zu kopieren (in dem vom Benutzer installierte globale Dateien auf einem Linux-VPS gespeichert sein sollten) und die Berechtigungen so festzulegen , dass alle Benutzer darauf zugreifen können .Hoffe das hilft!
quelle
chmod: cannot operate on dangling symlink ‘/home/ec2-user/.nvm/versions/node/v7.1.0/bin/node-debug’ chmod: cannot operate on dangling symlink ‘/home/ec2-user/.nvm/versions/node/v7.1.0/bin/node-inspector’
Meine Lösung besteht darin, symbolische Links aus den Versionen von zu erstellen,
node
undnpm
ich verwende Folgendes/usr/local/bin
:Dies macht
npm
undnode
für alle Benutzer verfügbar.quelle
npx
ziemlich oft. Also habe ich es auch hinzugefügt:sudo ln -s "$NVM_DIR/versions/node/$(nvm version)/bin/npx" "/usr/local/bin/npx"
babel-node
Ihr Problem ist, dass
nvm
das nicht im Pfad ist, wenn Sie verwendensudo
.Also tippe
und das Ergebnis wird so etwas wie sein
Versuchen Sie es jetzt noch einmal mit
sudo
:Ich gehe davon aus, dass Sie dann auf das Problem stoßen, dass der Root-Benutzer die Version 0.10.13 nicht finden kann, aber die nächste Fehlermeldung wird angezeigt ...
quelle
which nvm
gibt nichts aussudo
. Ja, ich kann mich als root anmelden und nvm installieren, aber in Zukunft konnte ich nicht mehr ausgeführt werdensudo nvm use v0.10.25
. Also konnte ich nicht auchsudo node
vom Benutzer verwenden.which nvm
funktioniert nie, oder?nvm
ist keine ausführbare Datei, sondern eine Shell-Funktion. github.com/creationix/nvm/issues/540which nvm
diesem Thema gestellt : stackoverflow.com/questions/49156104/… Verwenden Sie diese Optiontype nvm
, um die Definition zu enthüllen. Wie Matt sagte, ist es eine Shell-Funktion.Der Grund dafür ist, dass
nvm
es sich nicht um ein echtes Programm handelt. Es ist eine Bash-Funktion, die in den Benutzer geladen.profile
wird.bashrc
, oder ... Sie wirdsudo
also nicht wie die meisten anderen Programme automatisch aus dem $ PATH übernommen.Ein alternativer Knotenversionsmanager ist
n
: https://github.com/tj/n . Das ist ein echtes Programm, alsosudo
wird es über den $ PATH ohne Hacks aufgenommen (solangesudo
es/usr/local/bin
in seinem $ PATH enthalten ist).quelle
Laut README
Benötigen Sie sudo npm?
In meinem Fall muss ich
sudo npm run start
den Zugriff auf eine Datei benötigen, die Root-Zugriff erfordert. Nach dieser Ausgabe ,In Summe
Der Betreuer von nvm ist der festen Überzeugung, dass wir nicht müssen
sudo
: P.quelle
Ich hatte auch dein Problem. Endlich habe ich es umgangen. Hier ist meine Lösung:
apt-get purge nodejs
.Nach dem Neustart Ihres Terminals können Sie den Befehl ausführen
sudo nvm ls
.quelle
quelle
Ich habe das gleiche auf meinem Computer versucht, wo ich es
nvm
auch habe, und ich habe eine etwas andere Reaktion:Ich vermute, dass Sie den Knoten 0.11 außerhalb von nvm installiert haben. ( Über Paketmanager oder sogar von der Quelle )
Wenn Sie den Knoten über sudo ausführen, wird stattdessen dieser eigenständige Knoten verwendet.
Macht das Sinn oder irre ich mich?
quelle
Installieren Sie nvm global mit
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | sudo bash
quelle
| bash
nirgendwo sudo: nvm-sh / nvm: KnotenversionsmanagerDie einfachste Lösung hierfür ist wahrscheinlich, einfach auf die ausführbare Datei nvm.sh zu klicken, wo immer sie sich befindet.
Dies funktioniert gut für mich (vorausgesetzt, dies ist der Installationspfad).
Der vollständige Installationsvorgang würde so aussehen
Und dann können Sie den obigen Befehl ausführen, um die neu installierte nvm.sh zu treffen
quelle