Ich bin vorsichtiger als sonst, weil mich das Verhalten npm
in der Vergangenheit verwirrt hat.
Ich bin auf einem Mac und habe node.js durch installiert brew install node
.
Jetzt, da ich in jslint.js
der Befehlszeile als Befehl ausgeführt werden möchte, stelle jslint
ich fest, dass der kanonische Weg, dies zu erreichen, der ist, sudo npm install -g jslint
der mit dieser Ausgabe erfolgreich ausgeführt wurde:
$ sudo npm install -g jslint
npm http GET https://registry.npmjs.org/jslint
npm http 200 https://registry.npmjs.org/jslint
npm http GET https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgz
npm http 200 https://registry.npmjs.org/jslint/-/jslint-0.1.9.tgz
npm http GET https://registry.npmjs.org/nopt
npm http 200 https://registry.npmjs.org/nopt
npm http GET https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http 200 https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz
npm http GET https://registry.npmjs.org/abbrev
npm http 200 https://registry.npmjs.org/abbrev
npm http GET https://registry.npmjs.org/abbrev/-/abbrev-l.0.4.tgz
npm http 200 https://registry.npmjs.org/abbrev/-/abbrev-1.0.4.tgz
/usr/local/share/npm/bin/jslint -> /usr/local/share/npm/lib/node_modules/jslint/
bin/jslint.js
jslint@0.1.9 /usr/local/share/npm/lib/node_modules/jslint
└── nopt@1.0.10 (abbrev@1.0.4)
Anschließend
$ jslint ply.js
zsh: command not found: jslint
weil /usr/local/share/npm/bin
ich nicht in meinem bin $PATH
.
1) Warum wurde brew
Global npm
bin
Path to Path nicht installiert ? Vielleicht hat es das getan, aber etwas zsh
bringt es durcheinander. Wo könnte ich das finden?
2) Soll ich das tun? ( :/usr/local/share/npm/bin
An den exportierten $PATH
unten in meinem anhängen ~/.zshrc
)
Es scheint, dass dies nicht der richtige Weg ist, denn wenn ich später etwas anderes installiere (mit Homebrew oder etwas anderem), muss ich es an mein zsh-Startskript anhängen, um den Pfad festzulegen. Ich denke, in diesem speziellen Fall geht es nur darum, npm install -g
nicht die richtigen Symlinks an einem "richtigen" Ort zu /usr/local/bin
erstellen (wie vielleicht).
Ich denke, ich werde manuell Symlinks /usr/local/bin
für alle Programme erstellen, mit denen ich Probleme habe, und es sollte für meine Zwecke gut genug sein.
BEARBEITEN : Ich aktualisiere dies im Jahr 2019, da diese alte Frage beliebt ist, aber jetzt sowohl in Bezug auf meinen persönlichen Workflow als auch in Bezug auf die beste Vorgehensweise bei der Installation des Knotens und der Verwaltung seiner verschiedenen Abhängigkeiten veraltet ist.
Mein persönlicher Workflow besteht nun darin, das von nodejs.org erhaltene Installationsprogramm zum Installieren von Node auf Systemen zu verwenden. Ich vertraue diesem mehr als dem Homebrew-Paket selbst, weil es am besten weiß, wie man die Dateien verwaltet. Wenn Sie Ihren Systemknoten von 8.10 auf 10.15 ändern möchten, egal ob auf Mac oder Windows, laden Sie einfach das Installationsprogramm von nodejs.org für 10.15 für Ihr Betriebssystem herunter. Der Versuch, einen über Homebrew installierten Knoten zu aktualisieren, hat sich meiner Erfahrung nach immer als schwieriger erwiesen.
Das Wichtigste ist auch, dass von der Verwendung von sudo, wie in meiner obigen npm-Installation von jslint gezeigt, dringend abgeraten wird. Ich bin mir ziemlich sicher, dass Homebrew-Pakete niemals mit dem Superuser installiert oder in irgendeiner Weise interagiert werden sollten. Es sollte nicht notwendig sein und führt zu Kopfschmerzen bei der Dateiberechtigung!
Außerdem empfehle ich ESLint gegenüber jslint und habe jslint seit Jahren nicht mehr verwendet.
Antworten:
Erweitern Sie Ihre
PATH
mit:ist keine schreckliche Idee. Trotzdem sollten Sie es nicht tun müssen.
Führen Sie Folgendes aus:
Die Standardeinstellung unter OS X ist
/usr/local
, dh, npm verknüpft Binärdateien mit/usr/local/bin
, die sich bereits auf Ihrer befinden solltenPATH
(insbesondere, wenn Sie Homebrew verwenden).So:
npm config set prefix /usr/local
wenn es etwas anderes ist, undsudo
mit npm verwenden! Laut den jslint-Dokumenten sollten Sie nur dazu in der Lagenpm install
sein.Wenn Sie npm als sudo (
sudo brew install
) installiert haben, versuchen Sie, es mit plain ol 'neu zu installierenbrew install
. Homebrew soll Ihnen helfen, frei zu bleibensudo
.quelle
npm
weigert sich jedoch,jslint
global zu installieren .npm install -g jslint
schlägt fehl.Error: EACCES, open '/Users/user/.npm/564fcf84-jslint.lock'
chown
/usr/local
wenn Skripte Links in das Skript schreiben sollen, ohne dass dies erforderlich istsudo
? Wie wäre es, wenn Sie dies befolgen, um nom / node einzurichten~/.local
oder so?root
in meinem Verzeichnis hinterlegt hat~/
(vonsudo rm -r
ontmp/
und a.npm/
), aufgehoben und anschließendnpm install -g jslint
wunderbar funktioniert. Es ist schön, dass npm selbst ein Knotenprogramm ist und für mich ein bisschen ein JS-Befehlszeilen-Proof-of-Concept ist, den ich jetzt zu schätzen beginne, da ich es ein bisschen besser verstehe.chown
-ing/usr/local
und alles darin ist unter OS X Standard. Siehe die Seite zur Fehlerbehebung im Homebrew-Wiki.chown
Ing/usr/local
bereits auf meinem Computer aufgetreten ist, sonst könntennpm
et al. Ohnesudo
Links keine Links hinterlegen/usr/local/bin/
usw.Verbrachte eine Weile mit diesem Problem, und der PATH-Schalter half nicht. Mein Problem war der hier gefundene Homebrew / node / npm-Fehler - https://github.com/npm/npm/issues/3794
Wenn Sie den Knoten bereits mit Homebrew installiert haben, versuchen Sie ****. Beachten Sie laut Kommentaren, dass dies möglicherweise nicht sicher ist. Es hat bei mir funktioniert, könnte aber unbeabsichtigte Konsequenzen haben. Es scheint auch, dass die neueste Version von Homebrew npm ordnungsgemäß installiert. So wahrscheinlich würde ich versuchen
brew update
,brew doctor
,brew upgrade node
etc , bevor Sie versuchen ****:Wenn Sie Node mit Homebrew installieren und npm arbeiten lassen möchten, verwenden Sie:
quelle
Ich benutze Brew und das Präfix war bereits so eingestellt:
Ich habe festgestellt, dass der Ordner bin und lib im Besitz von root sind, was die übliche Nicht-Sudo-Installation verhinderte, sodass ich sie dem Benutzer wieder besaß
Dann habe ich einfach den Pfad zu meinem .bash_profile hinzugefügt, das sich unter / Users / [user] befindet.
quelle
Zum Brauen sollte es nicht erforderlich sein, sudo zu verwenden, selbst wenn npm mit -g ausgeführt wird. Dies könnte später tatsächlich zu weiteren Problemen führen.
In der Regel können Sie mit Brew oder Port Ihren Pfad aktualisieren, sodass Sie nicht riskieren, Ihre .zshrc-, .bashrc-, .cshrc- oder die von Ihnen verwendete Shell-Variante zu verfälschen.
quelle
sudo
. Ich habe sudo verwendetnpm
(weil mir etwas, das ich gelesen habe, gesagt hat). Ich bin gespannt, wo ich nachsehen kann, wie der Pfad eingestellt ist. Es scheint tatsächlich so, als ob daszsh
Installationsprogramm etwas ausführt, das den Pfad (zum Zeitpunkt der Installation vonzsh
) in den Pfad, den.zshrc
ich nicht so sehr mag , fest codiertnpm
sollte in installiert werden/usr/local
. Der/usr
Pfad-Namespace ist für die offiziellen Pakete Ihrer Distribution reserviert./usr/local/bin
in Ihrem $ PATH oder nicht, ist ein zsh-Problem.Ich habe es geschafft, Vue Cli no command error wie folgt zu beheben:
sudo nano ~/.bash_profile
, um Ihr Bash-Profil zu bearbeiten.export PATH=$PATH:/Users/[your username]/.npm-packages/bin
vue create my-project
undvue --version
etc. zu verwenden .Ich habe dies getan, nachdem ich das neueste Vue Cli von https://cli.vuejs.org/ installiert habe.
Ich verwende normalerweise Garn, aber ich habe es global mit npm installiert
npm install -g @vue/cli
. Sie können auch Garn verwenden, wenn Sie möchtenyarn global add @vue/cli
Hinweis: Möglicherweise müssen Sie es zuerst global deinstallieren, wenn Sie es bereits installiert haben:
npm uninstall -g vue-cli
Hoffe das hilft!
quelle
Jeder hat das gleiche Problem, das mit einem Konflikt zwischen Brew und Npm zusammenhängt. Überprüfen Sie diese Lösung unter https://gist.github.com/DanHerbert/9520689
quelle
Versuchen Sie zu laufen:
Führen Sie anschließend einen Test durch, indem Sie ihn
express
in der Befehlszeile ausführen. Das hat bei mir funktioniert.quelle
~/.npm/bin
oder so. Es sollte kein Verzeichnis zunpm
Ihrem Heimverzeichnis hinzugefügt werden.Wenn Sie die Knotenpakete mit dem Befehl sudo verknüpft haben
Wechseln Sie dann zu dem Ordner, in dem node_modules global installiert sind.
Auf Unix-Systemen werden sie bei globaler Installation normalerweise in / usr / local / lib / node oder / usr / local / lib / node_modules abgelegt. Wenn Sie die Umgebungsvariable NODE_PATH auf diesen Pfad setzen, werden die Module nach Knoten gefunden.
Windows XP -% USERPROFILE% \ Anwendungsdaten \ npm \ Knotenmodule Windows 7 -% AppData% \ npm \ Knotenmodule
und führen Sie dann den Befehl aus
Dadurch wird die Liste aller globalen Knotenmodule angezeigt, und Sie können die verknüpften Knotenmodule leicht anzeigen.
quelle
Sudo Brew ist keine Option mehr. Wenn Sie also zu diesem Zeitpunkt mit Brew installieren, erhalten Sie zwei wirklich abscheuliche Dinge: A: Es wird gerne in
/usr/local/opts
/ gemäß / usr / local / shared installiert . Dies ist zunächst keine große Sache, aber ich hatte Probleme mit dem Knoten PATH, insbesondere wenn ich Lint installiert habe. B: Sie bleiben bei sudo-Befehlen hängen, bis Sie sie entweder deinstallieren und auf diese Weise installieren oder den Stack von Bitnami erhaltenIch empfehle diese Methode über die Stapeloption, da sie sofort einsatzbereit ist, wenn Sie mehrere Projekte haben. Wenn Sie sich für den vorgefertigten MEAN-Stack entscheiden, müssen Sie virtuelle Hosts in httpd.conf einrichten (mehr ein Problem in diesem Stack als in XAMPP) Projekt, es sei denn, Sie möchten Ihren Server neu terminieren und neu starten, wenn Sie mit dem Aktualisieren fertig sind.
quelle
Einfache Lösung ist ...
Geben Sie einfach den folgenden Befehl ein:
sudo npm config get prefix
Wenn es nicht so etwas ist
/usr/local
, müssen Sie es mit dem folgenden Befehl beheben.sudo npm config set prefix /usr/local
...Jetzt funktioniert es zu 100% einwandfrei
quelle