Cli: [BUG] `npm install -g npm` supprime la commande` npm`

Créé le 18 déc. 2019  ·  19Commentaires  ·  Source: npm/cli

Quoi / Pourquoi

npm est supprimée après l'exécution de npm install -g npm .

Quand



  • 2019/12/18

  • Je ne me souviens pas exactement quand j'ai réussi à exécuter cette commande, mais il y a au moins une semaine.



  • npm / cli

Comment

Comportement actuel


Voici le journal:

~
% 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

J'ai confirmé que cela s'est reproduit lorsque j'ai lancé brew reinstall node .

En fait, comme le dit la sortie, je l'ai exécuté avec succès avec --force mais je pense que simplement afficher ces journaux est mieux que de supprimer la commande npm .

Modifier (11/01/2020):

En fait, comme le dit la sortie, je l'ai exécuté avec succès avec --force

Plus précisément, j'ai fait ces étapes:

  1. Restaurez la commande npm supprimée par npm install -g npm

    • Depuis que j'utilise Homebrew pour gérer Node.js, j'ai exécuté brew reinstall node pour le restaurer

  2. Exécutez npm install -g --force npm comme sortie mentionnée

Étapes à suivre pour reproduire

  • n / a

Comportement prévisible

  • La mise à jour de npm a réussi

Qui



  • n / a

Références



  • n / a

Bug

Commentaire le plus utile

En résumé, la solution est:

brew reinstall node
npm i -g --force npm

Tous les 19 commentaires

lié au changement de @isaacs dans https://github.com/npm/cli/commit/320ac9aeeafd11bb693c53b31148b8d10c4165e8 npm / bin-links # 12 npm / sweet-fs # 7 publié dans [email protected]

surfacé par la bosse de npm de 6.13.2 à 6.13.4 dans homebrew https://github.com/Homebrew/homebrew-core/commit/6acc21a27d0ba4ecfd6ebf4d77af7025143daefe#diff -d3ef2414308e30df24a517ca9a1324inerté @ authorfayxep

AFAICS c'est le comportement prévu dans npm. Je ne sais pas comment cela devrait être géré dans une configuration homebrew.

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

J'ai fait yarn global add npm et il a installé [email protected] et je n'ai pas rencontré l'erreur, mais maintenant tous mes packages globaux précédents ont disparu: ((

J'ai désactivé l'homebrew et j'ai simplement utilisé https://github.com/nvm-sh/nvm

Fais juste

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

Puis quelque part à la fin, tu verras

=> 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

Faites simplement source <name of profile> Dans mon cas <name of profile> est ~/.bash_profile donc ce sera source ~/.bash_profile

puis

nvm install node pour installer la dernière version de node, il installera également la dernière version de npm, et cela a fonctionné pour moi.

Je ne sais pas s'il est clair pour tout le monde sur ce fil que la solution, étant donné que vous savez ce que vous faites et pourquoi, est simplement

npm i -g --force npm (notez l'indicateur --force )

Le problème est qu'après avoir fait la commande npm -I npm et avoir obtenu l'erreur, essayer une commande npm échoue avec 'zsh: command not found: npm', donc je ne pouvais pas exécuter la commande --force même si je le voulais. J'ai dû préparer le nœud de réinstallation pour récupérer npm.

Désolé les gars, je n'ai pas décrit en détail comment j'ai temporairement évité ce problème. J'ai mis à jour la description, veuillez jeter un œil.

Je ne sais pas s'il est clair pour tout le monde sur ce fil que la solution, étant donné que vous savez ce que vous faites et pourquoi, est simplement

npm i -g --force npm (notez l'indicateur --force )

C'était la seule solution que j'ai trouvée pour résoudre ce problème.

2ème fois cela m'arrive dans quelques semaines. Vous pouvez le réparer avec brew reinstall node .

Voici la sortie que j'obtiens en cours d'exécution 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

En résumé, la solution est:

brew reinstall node
npm i -g --force npm

Cela ne se produit pas seulement avec l'installation homebrew. J'ai le même problème avec le programme d'installation de nodejs (sur le site officiel). Le correctif fonctionne, cependant ... (sudo npm i -g --force npm)

La mise à jour de npm supprime npm? Et ce n'est pas fixe depuis décembre?

La mise à jour de npm supprime npm? Et ce n'est pas fixe depuis décembre?

Oui, cela m'est arrivé aussi sur MacOS 10.15.2

Cela m'est arrivé aussi. MacOS Catalina 10.15.3

Cela m'est juste arrivé sur Ubuntu, et je n'utilise pas "brew".

J'ai fini par essayer de réinstaller npm, mais cela ne me permettrait pas de l'installer sans sudo. Installé avec sudo, puis trouvé un guide (apparemment mauvais) pour récupérer la propriété du répertoire ~ / .npm (et quelques autres). Au début, cela ne fonctionnait toujours pas, mais hash -r l'a corrigé (rétrospectivement, le redémarrage de mon Ubuntu aurait peut-être fonctionné aussi). Il y a une mince possibilité que cela corrige également un problème que j'avais avec react-snap.

Ce bug a été signalé en 2014 et il m'est arrivé aujourd'hui en 2020. Quelle catastrophe. Cela va-t-il jamais être réglé?

J'ai désactivé l'homebrew et j'ai simplement utilisé https://github.com/nvm-sh/nvm

Fais juste

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

Puis quelque part à la fin, tu verras

=> 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

Faites simplement source <name of profile> Dans mon cas <name of profile> est ~/.bash_profile donc ce sera source ~/.bash_profile

puis

nvm install node pour installer la dernière version de node, il installera également la dernière version de npm, et cela a fonctionné pour moi.

Cela ne se produit pas si vous utilisez NVM

"Cela ne se produit pas si vous utilisez NVM"

Ouais, eh bien, cela ne se produit pas non plus si vous utilisez yarn , mais je ne suis pas sûr que ce soit pertinent.

Je pense que ce n'est pas pertinent. NVM est un gestionnaire de version de nœud, j'ai vécu cela lorsque j'ai utilisé brew pour installer node, puis je suis passé à nvm, depuis lors, je n'ai pas encore vécu cela. Vérifiez-le ici si vous ne savez pas ce que c'est https://github.com/nvm-sh/nvm#installing -and-update

Cette page vous a été utile?
0 / 5 - 0 notes