Cli: [BUG] `npm install -g npm` entfernt den Befehl` npm`

Erstellt am 18. Dez. 2019  ·  19Kommentare  ·  Quelle: npm/cli

Was warum

npm Befehl npm install -g npm .

Wann



  • 18.12.2019

  • Ich kann mich nicht genau erinnern, wann es mir gelungen ist, diesen Befehl auszuführen, aber vor mindestens einer Woche.

Wo



  • npm / cli

Wie

Aktuelles Verhalten


Dies ist das Protokoll:

~
% brew install node
==> Downloading https://homebrew.bintray.com/bottles/node-13.3.0_1.catalina.bottle.tar.gz
Already downloaded: /Users/manabu/Library/Caches/Homebrew/downloads/8a482358c0487b3ffeeebf4d1f3b3ca825018f6318ecdd6368fd0a6f45e0bea1--node-13.3.0_1.catalina.bottle.tar.gz
==> Pouring node-13.3.0_1.catalina.bottle.tar.gz
==> Caveats
Bash completion has been installed to:
  /usr/local/etc/bash_completion.d
==> Summary
🍺  /usr/local/Cellar/node/13.3.0_1: 4,663 files, 59MB

~
% npm install -g npm
/usr/local/bin/npx -> /usr/local/lib/node_modules/npm/bin/npx-cli.js
/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
npm ERR! code EEXIST
npm ERR! syscall symlink
npm ERR! path ../../../lib/node_modules/npm/man/man1/npm-access.1
npm ERR! dest /usr/local/share/man/man1/npm-access.1
npm ERR! errno -17
npm ERR! EEXIST: file already exists, symlink '../../../lib/node_modules/npm/man/man1/npm-access.1' -> '/usr/local/share/man/man1/npm-access.1'
npm ERR! File exists: /usr/local/share/man/man1/npm-access.1
npm ERR! Remove the existing file and try again, or run npm
npm ERR! with --force to overwrite files recklessly.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/manabu/.npm/_logs/2019-12-18T07_51_00_280Z-debug.log

Ich habe bestätigt, dass dies erneut passiert ist, als ich brew reinstall node .

Wie in der Ausgabe angegeben, habe ich es erfolgreich mit --force aber ich denke, dass es besser ist, nur diese Protokolle anzuzeigen, als den Befehl npm entfernen.

Bearbeiten (2020/01/11):

Wie in der Ausgabe angegeben, habe ich es tatsächlich erfolgreich mit --force

Genauer gesagt habe ich folgende Schritte ausgeführt:

  1. Stellen Sie den Befehl npm wieder her, der von npm install -g npm

    • Da ich Homebrew zum Verwalten von Node.js verwende, habe ich brew reinstall node , um es wiederherzustellen

  2. Führen Sie npm install -g --force npm als Ausgabe aus

Schritte zum Reproduzieren

  • n / a

Erwartetes Verhalten

  • Das Aktualisieren von npm ist erfolgreich

Wer



  • n / a

Verweise



  • n / a

Bug

Hilfreichster Kommentar

Zusammenfassend lautet die Lösung:

brew reinstall node
npm i -g --force npm

Alle 19 Kommentare

im Zusammenhang mit der Änderung von @isaacs in https://github.com/npm/cli/commit/320ac9aeeafd11bb693c53b31148b8d10c4165e8 npm / bin-links # 12 npm / Gentle-Fs # 7 veröffentlicht in

durch die Beule von NPM taucht von 6.13.2 bis 6.13.4 in homebrew https://github.com/Homebrew/homebrew-core/commit/6acc21a27d0ba4ecfd6ebf4d77af7025143daefe#diff -d3ef2414308e30df24a517ca9a1324ee (Autor / commited von @pepyakin @fxcoudert @bayandin)

AFAICS Dies ist beabsichtigtes Verhalten in npm. Mir ist nicht klar, wie dies in einem Homebrew-Setup gehandhabt werden soll.

https://github.com/npm/cli/issues/672

Ich habe yarn global add npm und [email protected] installiert, und ich habe den Fehler nicht festgestellt, aber jetzt sind alle meine vorherigen globalen Pakete weg: ((

Ich habe mich von Homebrew abgemeldet und einfach https://github.com/nvm-sh/nvm verwendet

Mach einfach

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash

Dann wirst du irgendwo am Ende sehen

=> Compressing and cleaning up git repository

=> Appending nvm source string to /Users/aprilmintacpineda/.bash_profile
=> Appending bash_completion source string to /Users/aprilmintacpineda/.bash_profile
=> Close and reopen your terminal to start using nvm or run the following to use it now:

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

Mach einfach source <name of profile> In meinem Fall ist <name of profile> ~/.bash_profile also ist es source ~/.bash_profile

dann

nvm install node um die neueste Version von Node zu installieren, wird auch die neueste Version von npm installiert, und das hat bei mir funktioniert.

Ich bin mir nicht sicher, ob allen in diesem Thread klar ist, dass die Lösung einfach ist, wenn Sie wissen, was Sie tun und warum

npm i -g --force npm (beachten Sie die Flagge --force )

Das Problem ist, dass nach dem Ausführen von npm -I npm und dem Abrufen des Fehlers das Ausprobieren eines npm-Befehls mit 'zsh: Befehl nicht gefunden: npm' fehlschlägt, sodass ich den Befehl --force nicht ausführen konnte, selbst wenn ich wollte. Ich musste den Neuinstallationsknoten brauen, um npm zurück zu bekommen.

Sorry Leute, ich habe nicht vollständig beschrieben, wie ich dieses Problem vorübergehend vermieden habe. Ich habe die Beschreibung aktualisiert, bitte schauen Sie.

Ich bin mir nicht sicher, ob allen in diesem Thread klar ist, dass die Lösung einfach ist, wenn Sie wissen, was Sie tun und warum

npm i -g --force npm (beachten Sie die Flagge --force )

Dies war die einzige Lösung, die ich gefunden habe, um dies tatsächlich zu beheben.

Das zweite Mal passiert mir das in ein paar Wochen. Sie können es mit brew reinstall node beheben.

Hier ist die Ausgabe, die ich bekomme npm install -g npm :

/usr/local/bin/npm -> /usr/local/lib/node_modules/npm/bin/npm-cli.js
/usr/local/bin/npx -> /usr/local/lib/node_modules/npm/bin/npx-cli.js
npm ERR! code EEXIST
npm ERR! syscall symlink
npm ERR! path ../../../lib/node_modules/npm/man/man1/npm-adduser.1
npm ERR! dest /usr/local/share/man/man1/npm-adduser.1
npm ERR! errno -17
npm ERR! EEXIST: file already exists, symlink '../../../lib/node_modules/npm/man/man1/npm-adduser.1' -> '/usr/local/share/man/man1/npm-adduser.1'
npm ERR! File exists: /usr/local/share/man/man1/npm-adduser.1
npm ERR! Remove the existing file and try again, or run npm
npm ERR! with --force to overwrite files recklessly.

npm ERR! A complete log of this run can be found in:
npm ERR!     /Users/albertvilacalvo/.npm/_logs/2020-01-13T11_55_47_922Z-debug.log

Zusammenfassend lautet die Lösung:

brew reinstall node
npm i -g --force npm

Dies geschieht nicht nur bei der Installation von Homebrew. Ich habe das gleiche Problem mit dem Installationsprogramm von nodejs (von der offiziellen Website). Das Update funktioniert jedoch ... (sudo npm i -g --force npm)

Aktualisieren von npm löscht npm? Und es ist seit Dezember nicht mehr festgelegt?

Aktualisieren von npm löscht npm? Und es ist seit Dezember nicht mehr festgelegt?

Ja, es ist mir gerade auch unter MacOS 10.15.2 passiert

Ist mir auch passiert. MacOS Catalina 10.15.3

Das ist mir gerade unter Ubuntu passiert und ich benutze kein "Brauen".

Am Ende habe ich versucht, npm neu zu installieren, aber ohne sudo konnte ich es nicht installieren. Mit sudo installiert, dann eine (anscheinend schlechte) Anleitung gefunden, um den Besitz des Verzeichnisses ~ / .npm (und einiger anderer) zurückzugewinnen. Anfangs hat es immer noch nicht funktioniert, aber Hash -r hat es behoben (im Nachhinein könnte ein Neustart meines Ubuntu auch funktioniert haben). Es gibt eine geringe Möglichkeit, dass dies auch ein Problem behoben hat, das ich mit React-Snap hatte.

Dieser Fehler wurde 2014 gemeldet und ist mir heute im Jahr 2020 passiert. Was für eine Katastrophe. Wird das jemals behoben werden?

Ich habe mich von Homebrew abgemeldet und einfach https://github.com/nvm-sh/nvm verwendet

Mach einfach

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash

Dann wirst du irgendwo am Ende sehen

=> Compressing and cleaning up git repository

=> Appending nvm source string to /Users/aprilmintacpineda/.bash_profile
=> Appending bash_completion source string to /Users/aprilmintacpineda/.bash_profile
=> Close and reopen your terminal to start using nvm or run the following to use it now:

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

Mach einfach source <name of profile> In meinem Fall ist <name of profile> ~/.bash_profile also ist es source ~/.bash_profile

dann

nvm install node um die neueste Version von Node zu installieren, wird auch die neueste Version von npm installiert, und das hat bei mir funktioniert.

Dies passiert nicht, wenn Sie nvm verwenden

"Das passiert nicht, wenn Sie nvm verwenden"

Ja, es passiert auch nicht, wenn Sie yarn , aber ich bin mir nicht sicher, ob das relevant ist.

Ich finde das irrelevant. NVM ist Node Version Manager. Ich habe dies erlebt, als ich Brew zum Installieren von Node verwendet habe. Dann bin ich zu NVM gewechselt, seitdem habe ich dies noch nicht erlebt. Überprüfen Sie es hier, wenn Sie nicht wissen, was es ist https://github.com/nvm-sh/nvm#installing -and-updating

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

millerick picture millerick  ·  3Kommentare

ahuglajbclajep picture ahuglajbclajep  ·  3Kommentare

darcyclarke picture darcyclarke  ·  3Kommentare

1000i100 picture 1000i100  ·  3Kommentare

zypA13510 picture zypA13510  ·  4Kommentare