Cli: [BUG] `npm install -g npm` remove o comando` npm`

Criado em 18 dez. 2019  ·  19Comentários  ·  Fonte: npm/cli

O que? Por que

npm comando npm install -g npm .

Quando



  • 18/12/2019

  • Não me lembro exatamente quando consegui executar este comando, mas pelo menos uma semana atrás.

Onde



  • npm / cli

Quão

Comportamento Atual


Este é o log:

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

Confirmei que isso aconteceu novamente quando executei brew reinstall node .

Na verdade, como a saída disse, eu executei com sucesso com --force mas acho que apenas mostrar esses logs é melhor do que remover o comando npm .

Editar (2020/01/11):

Na verdade, como a saída disse, eu executei com sucesso com --force

Mais especificamente, fiz estas etapas:

  1. Restaure o comando npm que foi removido por npm install -g npm

    • Como uso o Homebrew para gerenciar Node.js, executei brew reinstall node para restaurá-lo

  2. Execute npm install -g --force npm como a saída mencionada

Passos para reproduzir

  • n / D

Comportamento esperado

  • A atualização do npm foi bem-sucedida

Quem



  • n / D

Referências



  • n / D

Bug

Comentários muito úteis

Resumindo, a solução é:

brew reinstall node
npm i -g --force npm

Todos 19 comentários

relacionado à mudança de @isaacs em https://github.com/npm/cli/commit/320ac9aeeafd11bb693c53b31148b8d10c4165e8 npm / bin-links # 12 npm / gentle-fs # 7 lançado em [email protected]

tona pela colisão de npm de 6.13.2 a 6.13.4 em fermentação home https://github.com/Homebrew/homebrew-core/commit/6acc21a27d0ba4ecfd6ebf4d77af7025143daefe#diff -d3ef2414308e30df24a517ca9a1324ee (autoria / comprometida por @pepyakin @fxcoudert @bayandin)

AFAICS este é o comportamento pretendido no npm. Não está claro para mim como isso deve ser tratado em uma configuração de homebrew.

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

Eu fiz yarn global add npm e ele instalou [email protected] e não encontrei o erro, mas agora todos os meus pacotes globais anteriores se foram: ((

Eu desativei o homebrew e simplesmente usei https://github.com/nvm-sh/nvm

Apenas faça

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

Então, em algum lugar no final, você verá

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

Basta fazer source <name of profile> No meu caso <name of profile> é ~/.bash_profile então será source ~/.bash_profile

então

nvm install node para instalar a versão mais recente do node, ele também instalará a versão mais recente do npm, e funcionou para mim.

não tenho certeza se está claro para todos neste tópico que a solução, visto que você sabe o que está fazendo e por quê, é simplesmente

npm i -g --force npm (observe a bandeira --force )

O problema é que, depois de executar o npm -I npm e obter o erro, a tentativa de qualquer comando npm falha com 'zsh: command not found: npm', então eu não poderia executar o comando --force mesmo se quisesse. Eu tive que preparar o nó de reinstalação para obter o npm de volta.

Desculpe, pessoal, não descrevi totalmente como evitei temporariamente esse problema. Eu atualizei a descrição, por favor dê uma olhada.

não tenho certeza se está claro para todos neste tópico que a solução, visto que você sabe o que está fazendo e por quê, é simplesmente

npm i -g --force npm (observe a bandeira --force )

Esta foi a única solução que encontrei para consertar isso de fato.

2ª vez que isso acontece comigo em algumas semanas. Você pode consertar com brew reinstall node .

Aqui está a saída que obtenho ao executar 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

Resumindo, a solução é:

brew reinstall node
npm i -g --force npm

Isso não acontece apenas com a instalação do homebrew. Eu tenho o mesmo problema com o instalador nodejs (do site oficial). A correção funciona, porém ... (sudo npm i -g --force npm)

Atualizar o npm exclui o npm? E não está consertado desde dezembro?

Atualizar o npm exclui o npm? E não está consertado desde dezembro?

Sim, também aconteceu comigo no MacOS 10.15.2

Aconteceu comigo também. MacOS Catalina 10.15.3

Isso só aconteceu comigo no Ubuntu, e eu não uso "brew".

Acabei tentando reinstalar o npm, mas ele não me deixou instalá-lo sem o sudo. Instalado com sudo, encontrei um guia (aparentemente ruim) para reclamar a propriedade do diretório ~ / .npm (e alguns outros). No início ainda não funcionava, mas o hash -r corrigiu (em retrospecto, reiniciar meu Ubuntu pode ter funcionado também). Há uma pequena possibilidade de que isso também corrigiu um problema que eu estava tendo com o reajuste.

Este bug foi relatado em 2014 e aconteceu comigo hoje em 2020. Que desastre. Isso vai ser consertado?

Eu desativei o homebrew e simplesmente usei https://github.com/nvm-sh/nvm

Apenas faça

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

Então, em algum lugar no final, você verá

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

Basta fazer source <name of profile> No meu caso <name of profile> é ~/.bash_profile então será source ~/.bash_profile

então

nvm install node para instalar a versão mais recente do node, ele também instalará a versão mais recente do npm, e funcionou para mim.

Isso não acontece se você usar nvm

"Isso não acontece se você usar nvm"

Sim, bem, isso não acontece se você usar yarn também, mas não tenho certeza se isso é relevante.

Acho isso irrelevante. NVM é o gerenciador de versão de nó, eu experimentei isso quando usei o brew para instalar o nó, então mudei para nvm, desde então eu não experimentei isso ainda. Verifique aqui se você não sabe o que é https://github.com/nvm-sh/nvm#installing -and-update

Esta página foi útil?
0 / 5 - 0 avaliações