Nvm-windows: Não é possível atualizar o npm (nó 8.4.0)

Criado em 7 set. 2017  ·  127Comentários  ·  Fonte: coreybutler/nvm-windows

Se esta é uma questão sobre como usar o NVM4W, use stackoverflow .

Se este for um problema relacionado ao antivírus, certifique-se de pesquisar os problemas existentes primeiro.

Meu ambiente

  • [] Windows 7 ou inferior (sem suporte devido ao EOL - consulte o wiki para obter detalhes)
  • [] Windows 8
  • [] Windows 8.1
  • [x] Windows 10
  • [] Windows 10 IoT Core
  • [] Windows Server 2012
  • [] Windows Server 2012 R2
  • [] Windows Server 2016

  • [] Minha instalação do Windows não está em inglês.

Estou usando a versão NVM4W:

  • [] 1.1.6
  • [x] 1.1.5
  • [] 1.1.4
  • [] 1.1.3
  • [] 1.1.2
  • [] 1.1.1
  • [ ] Mais velho
  • [ ] Outro (por favor, especifique)

Eu já...

  • [x] leia o README para estar ciente dos problemas do npm e do antivírus.
  • [] revisou o wiki para ter certeza de que meu problema ainda não foi resolvido.
  • [x] verificado Estou usando uma conta com privilégios administrativos.
  • [x] pesquisou os problemas (abertos e fechados) para se certificar de que não era uma duplicata.
  • [] certificou-se de que esta não é uma pergunta sobre como usar o NVM para Windows, já que o gitter é usado para perguntas e comentários.

Meu problema está relacionado a (marque apenas os que se aplicam):

  • [] settings.txt
  • [] suporte a proxy (você tentou a versão 1.1.0+?)
  • [] Suporte de 32 ou 64 bits (você tentou a versão 1.1.3+?)
  • [] Caractere de escape (você tentou a versão 1.1.6+?)
  • [x] Um ambiente de shell padrão (terminal / powershell)
  • [] Um ambiente de shell não padrão (Cmder, Hyper, Cygwin, git)

Comportamento esperado

npm i -g npm @ mais recente deve instalar a versão mais recente do npm

Comportamento Real

um erro:
npm ERR! path C:\Program Files\nodejs\npm.cmd npm ERR! code EEXIST npm ERR! Refusing to delete C:\Program Files\nodejs\npm.cmd: is outside C:\Program Files\nodejs\node_modules\npm and not a link npm ERR! File exists: C:\Program Files\nodejs\npm.cmd npm ERR! Move it away, and try again.

Etapas para reproduzir o problema:

executado como administrador npm i -g npm@latest

help wanted

Comentários muito úteis

Acabei de remover os arquivos npm e npm.cmd do local do nodejs, movo dir node_modules/npm do local do nodejs para outro local e executo node npm-cli.js i -g npm@latest dentro de bin dir na pasta movida.

Todos 127 comentários

Mesmo problema aqui.

Eu tive o mesmo problema e aqui está como superei:

execute npm install -g npm e enquanto estiver em execução :
remover (backup) arquivos npm.cmd e npm de c:\Program Files\nodejs\
remover (backup) .bin pasta de c:\Program Files\nodejs\node_modules\npm\node_modules , então deve ser bem sucedido
Se você tiver Refusing to delete problemas com qualquer outro módulo npm files/folders , basta removê-los e reiniciar o processo de atualização. Para reiniciar copie npm.cmd volta para c:\Program Files\nodejs\ . Então, quando npm install -g npm estiver em execução, remova npm.cmd , caso contrário, você entrará no problema de Refusing to delete npm.cmd e poderá repetir esse processo até que npm install -g npm esteja satisfeito.

Para remover os arquivos você pode usar este atalho: mv npm.cmd "c:\Program Files\nodejs\node_modules\npm\node_modules" como sugerido por @farnetani

meu env:
windows 7 x64, node 8.4, nvm 1.1.6

image

Vendo o mesmo problema

si mesmos
windows 10
nó 8.5.0
acima do nível do mar 5.3.0
nvm 1.1.0

@kuncevic
A solução mais fácil é copiar dir node_modules/npm do local do nodejs, remover o npm bin e cmd e executar node npm-cli.js i -g npm@latest dentro de bin dir na pasta copiada.

Tanto para produção. Boa sorte em um script.

Eles devem renomear integração contínua para integração contínua

@ 19majkel94 Não

Parece que o npm mudou a forma como ele se atualiza ... sem avisar a ninguém. O npx também foi introduzido com apenas uma alteração de versão secundária (em oposição a uma alteração principal) ... que é _semanticamente_ correta, mas ainda difícil de acompanhar.

Aparentemente, há algum sandbox de arquivo acontecendo. Passei a maior parte do dia investigando e tentando uma correção, mas cada correção traz um outro problema. Tenha paciência, vou consertá-lo assim que puder. Eu sou o único trabalhando nisso no momento ... e estou no meio de um lançamento de produto diferente (após 2 anos de trabalho), então um PR seria aceito com prazer.

Queria poder ajudar, mas tenho uma observação ... Acho que os problemas estão relacionados ao atalho para " C:/Program Files/nodejs ". Talvez se uma junção fosse usada em vez de um atalho? O Windows não consegue diferenciar um diretório 'real' de uma junção. Portanto, pareceria que o node foi realmente instalado no diretório padrão. Não há mais 'operação' em um diretório fora do diretório resolvido.

https://docs.microsoft.com/en-us/sysinternals/downloads/junction

BTW, usar uma junção deve preparar o nvm4w no futuro contra quaisquer alterações futuras no comportamento do npm.

@ wayne-oscme
Você leu o readme?

A segunda opção é usar um link simbólico. Este conceito requer colocar o link simbólico no PATH do sistema e, em seguida, atualizar seu destino para o diretório de instalação do nó que deseja usar. Esta é uma abordagem direta e parece ser o que as pessoas recomendam ... até que percebam o quanto os links simbólicos são uma dor no Windows. É por isso que não aconteceu antes.

Para criar / modificar um link simbólico, você deve estar executando como um administrador e deve contornar o UAC do Windows (aquele prompt irritante). Felizmente, este é um desafio que já resolvi com alguns scripts auxiliares em node-windows. Como resultado, o NVM para Windows mantém um único link simbólico que é colocado no PATH do sistema apenas durante a instalação. Mudar para diferentes versões de nó é uma questão de mudar o alvo do link simbólico. Como resultado, este utilitário não exige que você execute nvm use xxx sempre que abrir uma janela de console. Quando você executa nvm use xxx, a versão ativa do nó é atualizada automaticamente em todas as janelas de console abertas. Ele também persiste entre as reinicializações do sistema, então você só precisa usar o nvm quando quiser fazer uma alteração.

@ 19majkel94
Por favor, leia sobre cruzamentos. O 'link simbólico', também conhecido como atalho da janela, tem problemas com a resolução do diretório de destino dos processos. Embora o explorador e o terminal do Windows pareçam lidar bem com eles, eles não são bem tratados em outros processos. Abra o bloco de notas, escolha abrir arquivo para obter a caixa de diálogo de arquivo da janela padrão. Navegue até "C:/Program Files/nodejs" e veja onde você termina.

Ser um redirecionamento para o diretório de destino, que, como vemos, é onde os processos acabam, pode levar a alguns problemas interessantes.

As junções são equivalentes a links físicos em * nix. O Windows só oferece suporte para diretórios e não para arquivos, mas isso é tudo de que precisamos aqui. Eles não são redirecionamentos. Eles são, para todos os efeitos e propósitos, o diretório, não diferente do caminho criado quando o diretório foi criado pela primeira vez.

Eles não redirecionam, eles são o destino. Eles podem ser excluídos e criados novamente com cada comando 'use'. Portanto, eles terão os mesmos efeitos e recursos dos atalhos, mas nenhuma das quedas que estão criando o problema atual.

Isso não tem nada a ver com junções / links físicos / links simbólicos. @kuncevic forneceu uma captura de tela citando erros de npm, a parte principal sendo Refusing to delete ... which is outside of .... . Essa é uma mensagem codificada em npm, evitando operações futuras. Resumindo: o npm se recusa a se atualizar totalmente.

Isso não parecia ser um problema até o npm 5.xx, e ainda estou pesquisando os detalhes para descobrir o que mudou. Posso ter que escrever uma solução alternativa (isto é, hackear), que nunca gostei. Também estou pensando em utilizar os pacotes msi, que parecem ser a única maneira de chamar a atenção do pessoal do npm.

Se você estiver com muita necessidade de atualizar o npm, pode baixá-lo via https://github.com/npm/npm/archive/vX.X.X.zip e extraí-lo no diretório node_modules da raiz de instalação do seu nó. Você precisará criar manualmente um link simbólico no _node raiz de instalação_ para npm.cmd e npx.cmd . A estrutura final do arquivo deve ser semelhante a:

nvm
- v8.5.0
   - node_modules
       - npm
          - bin
               - npm.cmd
               - npx.cmd
          ...
   - node.exe
   - npm.cmd (symlink to v8.5.0/node_modules/npm/bin/npm.cmd)
   - npx.cmd (symlink to v8.5.0/node_modules/npm/bin/npx.cmd)

Ok, acho que devo tentar antes de vender. Eu substituí o atalho por um
junção, e tem exatamente o mesmo problema. Pensei que tinha algo lá.
Desculpe perder seu tempo.

Na quarta-feira, 27 de setembro de 2017 às 9h38, Corey Butler [email protected]
escrevi:

Isso não tem nada a ver com junções / links físicos / links simbólicos. @kuncevic
https://github.com/kuncevic forneceu uma captura de tela citando erros de npm,
a parte principal é recusar-se a excluir ... que está fora de ... Isso
é uma mensagem codificada em npm, evitando operações futuras. Conclusão:
O npm se recusa a atualizar-se completamente.

Isso não parecia ser um problema até o npm 5.xx, e ainda estou procurando
através dos detalhes para descobrir o que mudou. Posso ter que escrever um
solução alternativa (ou seja, hackear), da qual nunca gostei. Eu também estou procurando
utilizando os pacotes msi, que parece ser a única maneira de obter o
atenção do pessoal às npm.

Se você está com muita necessidade de atualizar o npm, pode baixá-lo via
https://github.com/npm/npm/archive/vX.XXzip e extraia-o no
diretório node_modules de sua raiz de instalação do nó. Você vai precisar
crie manualmente um link simbólico na raiz de instalação do
npx.cmd. A estrutura final do arquivo deve ser semelhante a:

nvm

  • v8.5.0

    • node_modules



      • npm





        • bin







          • npm.cmd




          • npx.cmd




            ...










    • node.exe

    • npm.cmd (link simbólico para v8.5.0 / node_modules / npm / bin / npm.cmd)

    • npx.cmd (link simbólico para v8.5.0 / node_modules / npm / bin / npx.cmd)

-
Você está recebendo isso porque foi mencionado.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/coreybutler/nvm-windows/issues/300#issuecomment-332523342 ,
ou silenciar o tópico
https://github.com/notifications/unsubscribe-auth/AEZgRbY_GVys0bfnD_kaM_PYl6QUmZKDks5smk_PgaJpZM4PPcf-
.

Acabei de atualizar 5.4.1 → 5.4.2 sem problemas.

c:\>npm install npm -g
C:\Program Files\nodejs\npx -> C:\Program Files\nodejs\node_modules\npm\bin\npx-cli.js
C:\Program Files\nodejs\npm -> C:\Program Files\nodejs\node_modules\npm\bin\npm-cli.js
+ [email protected]
removed 1 package and updated 2 packages in 12.125s

@kuncevic - obrigado ... isso é indicativo de que o problema deve estar dentro do npm 5.4.3+.

npm -g install [email protected] ainda falha para mim, mesmos erros.
[Editar] BTW, que está começando a partir de 5.3.0, que foi instalado com nvm install 8.5.0

Na sexta-feira, 29 de setembro de 2017 às 11h41, Corey Butler [email protected]
escrevi:

@kuncevic https://github.com/kuncevic - obrigado ... isso é indicativo de
o problema deve estar dentro do npm 5.4.3+.

-
Você está recebendo isso porque foi mencionado.
Responda a este e-mail diretamente, visualize-o no GitHub
https://github.com/coreybutler/nvm-windows/issues/300#issuecomment-333161774 ,
ou silenciar o tópico
https://github.com/notifications/unsubscribe-auth/AEZgRQnw_jxuz_dDZl3OsZVO_MNkHlBGks5snQ-qgaJpZM4PPcf-
.

Para mim, ele falha no Nó 8.4.0 e superior. Ele instala o NPM 5.3.0 e não permite que eu faça upgrade.
Versões mais antigas do Node (eu tenho 4.8.4) permitem que o NPM seja atualizado normalmente.

Homem. npm 5 e nvm realmente é uma merda (mas eu culpo o npm 5 aqui, já que 4 funciona perfeitamente bem). Fiz o downgrade para o npm 4.6.1 na semana passada e tentei dar outra chance ao 5.4.2. Parece que o npm foi desinstalado ao tentar instalar o react-native-cli, um pacote completamente diferente:

Manuel@Manuel-406 /cygdrive/d/htdocs/wallet
$ npm install -g react-native-cli
C:\Program Files\nodejs\npx -> C:\Program Files\nodejs\node_modules\npm\bin\npx-cli.js
npm WARN Error: EPERM: operation not permitted, scandir 'C:\Program Files\nodejs\node_modules\npm\node_modules\libnpx\node_modules\yargs\node_modules\os-locale\node_modules\execa\node_modules\cross-spawn\node_modules\shebang-command\node_modules'
npm WARN  { Error: EPERM: operation not permitted, scandir 'C:\Program Files\nodejs\node_modules\npm\node_modules\libnpx\node_modules\yargs\node_modules\os-locale\node_modules\execa\node_modules\cross-spawn\node_modules\shebang-command\node_modules'
npm WARN   stack: 'Error: EPERM: operation not permitted, scandir \'C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\libnpx\\node_modules\\yargs\\node_modules\\os-locale\\node_modules\\execa\\node_modules\\cross-spawn\\node_modules\\shebang-command\\node_modules\'',
npm WARN   errno: -4048,
npm WARN   code: 'EPERM',
npm WARN   syscall: 'scandir',
npm WARN   path: 'C:\\Program Files\\nodejs\\node_modules\\npm\\node_modules\\libnpx\\node_modules\\yargs\\node_modules\\os-locale\\node_modules\\execa\\node_modules\\cross-spawn\\node_modules\\shebang-command\\node_modules' }
npm ERR! path C:\Program Files\nodejs\npm
npm ERR! code EPERM
npm ERR! errno -4048
npm ERR! syscall open
npm ERR! Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\npm'
npm ERR!  { Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\npm'
npm ERR!   cause:
npm ERR!    { Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\npm'
npm ERR!      errno: -4048,
npm ERR!      code: 'EPERM',
npm ERR!      syscall: 'open',
npm ERR!      path: 'C:\\Program Files\\nodejs\\npm' },
npm ERR!   stack: 'Error: EPERM: operation not permitted, open \'C:\\Program Files\\nodejs\\npm\'',
npm ERR!   errno: -4048,
npm ERR!   code: 'EPERM',
npm ERR!   syscall: 'open',
npm ERR!   path: 'C:\\Program Files\\nodejs\\npm',
npm ERR!   parent: 'v8.5.0' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\Manuel\AppData\Roaming\npm-cache\_logs\2017-10-02T14_54_04_833Z-debug.log

Manuel@Manuel-406 /cygdrive/d/htdocs/_git/wallet
$ npm install -g react-native-cli
sh: npm: Kommando nicht gefunden.
  • ubuntu : 16.04.2 LTS
  • nodejs : 8.6.0
  • npm : 5.3.0
npm i -g npm<strong i="15">@latest</strong>

/home/user/.npm-global/bin/npm -> /home/user/.npm-global/lib/node_modules/npm/bin/npm-cli.js
/home/user/.npm-global/bin/npx -> /home/user/.npm-global/lib/node_modules/npm/bin/npx-cli.js
+ [email protected]
added 68 packages, removed 164 packages and updated 14 packages in 14.307s

npm -v ainda imprime 5.3.0 e não está atualizado?

@yavorski - este é o nvm para Windows. Eu acho que você quer nvm para * nix .

Confirmei que este problema está em sandbox dentro do npm 5.xx As edições anteriores do npm não tinham isso. Infelizmente, a correção não é trivial e, a julgar pela experiência de @yavorski , não é específica para este projeto.

Sim, não nvm no meu caso. Linux + Nodejs da nodesource.

Tendo o mesmo problema aqui ...

npm versão 5.4.2
nó versão 8.7.0
janela 10

Eu tenho o mesmo problema.

Windows 10
mv npm.cmd "c:\Program Files\nodejs\node_modules\npm\"

e depois

npm i -g npm@latest

Resolvido para mim!

Tenho um comportamento semelhante com o Node v8.9.0. Ele vem com o npm 5.5.1 e quando tento fazer o downgrade para o npm 4, ocorre o erro refusing to delete .

Tentei consertar manualmente, puxando o npm do arquivo zip oficial e recebi este erro:
image

Suspeito que esse erro esteja ocorrendo silenciosamente e corrompendo a instalação. Quando instalo em C:\nvm , não recebo esse erro e tudo funciona como esperado.

@RichardMisiak você tentou mover a instalação de nvm para um caminho mais próximo de C:\ ? Gosta de C:\nvm ? Isso esclareceu o problema para mim.

Com o nó mais recente 9.1 que traz o último npm 5.5.1 por padrão, há ainda mais "diversão" https://github.com/npm/npm/issues/19019 , dizendo com o próximo npm liberar pode ser corrigido.

Minha solução NÃO é muito elegante, mas funciona. Aqui está.
Depois de executar npm install [email protected] -g , obtive o seguinte erro:

npm ERR! path d:\node\npm.cmd
npm ERR! code EEXIST
npm ERR! Refusing to delete d:\node\npm.cmd: is outside d:\node\node_modules\npm and not a link
npm ERR! File exists: d:\node\npm.cmd
npm ERR! Move it away, and try again.
...

Minha solução alternativa foi a seguinte:

  1. npm install -g yarn
  2. Reinicie o computador
  3. Execute yarn global bin e adicione a pasta que é exibida na variável env PATH do Windows
  4. Vá para a pasta onde npm.cmd está localizado (verifique no erro que acabamos de obter na execução npm install [email protected] -g : d:\node\ no meu caso) e:
    2.1. Renomear npm para npm.original (ou apenas excluí-lo)
    2.1. Renomear npm.cmd para npm.cmd.original (ou apenas excluí-lo)
  5. Feche o terminal e abra um novo
  6. yarn global add [email protected]
  7. npm install [email protected] -g (isso instalará o npm usando a versão npm localizada na pasta yarn global bin )
  8. yarn global remove npm (para excluir a versão npm instalada pelo yarn e manter apenas a versão instalada pelo próprio npm)

Basta renomear o lote ANTES de atualizar:
executar cmd

cd %ProgramFiles%\nodejs
ren npm.cmd npm2.cmd
ren npm npm2 
npm2 install npm<strong i="7">@latest</strong> -g

exclua os arquivos após a atualização:

del npm2
del npm2.cmd

@ rolf-schmidiger Em minha experiência, tive que fazer a mesma renomeação com npx e npx.cmd e com npm e npm.cmd.

Deliciosamente simples e eficaz, @ rolf-schmidiger. Obrigado.

@coreybutler , alguma ideia de solução? Apenas curioso. Sem pressão.

Nenhuma das soluções listadas aqui funcionou para mim e, no final, foi mais rápido usar nvmw uninstall para excluir a instalação do Node e, em seguida, nvmw install para reinstalá-lo.

nvmw uma ferramenta completamente diferente?

@thegreatco Oops! Você está certo. O interessante é que o mesmo problema ocorre em ambos!

Com base na resposta de @rolf-schmidiger, criei um script de atualização para ele ... É uma pena que esta seja a única maneira de fazê-lo funcionar.

#!/usr/bin/bash

cd "$PROGRAMFILES"/nodejs
mv npm.cmd npm2.cmd
mv npm npm2
npm2 install -g npm<strong i="6">@latest</strong>
rm npm2
rm npm2.cmd

ATUALIZAR

Este é o último que está funcionando para mim.

#!/usr/bin/bash

cd "$PROGRAMFILES"/nodejs
rm npm npx npm.cmd npx.cmd
mv node_modules/npm node_modules/npm2
node node_modules/npm2/bin/npm-cli.js i -g npm<strong i="12">@latest</strong>
rm -rf node_modules/npm2/

Acabei de instalar tudo pela primeira vez, então nenhuma das sugestões acima parece se aplicar a mim. Eu continuo recebendo isso ao tentar executar npx create-react-app :

npx : The term 'npx' is not recognized as the name of a cmdlet, function, script file, or operable program. Check
the spelling of the name, or if a path was included, verify that the path is correct and try again.

Windows 10 Pro, build 1703, reinstalação recente há cerca de 2 semanas com o modo de desenvolvedor habilitado
Node versão 9.4.0
npm 5.6.0

As instruções de instalação eram um pouco confusas (há vários arquivos para baixar, para que serve esse arquivo sem instalação?), Mas finalmente descobri que você tem que ligar o nvm e depois emitir o comando 'usar', (confuso porque não estou usando um gerenciador de pacotes separado, então pensei que essa parte não se aplicava), mas ainda estou recebendo o erro acima.

Tentei todas as coisas possíveis. Desinstalei o nvm e instalei uma versão diferente, verifiquei o caminho do ambiente, fiquei sem ideias. Eu finalmente fiz npm install -g npx e parece estar funcionando. Dane-se.

Acabei de remover os arquivos npm e npm.cmd do local do nodejs, movo dir node_modules/npm do local do nodejs para outro local e executo node npm-cli.js i -g npm@latest dentro de bin dir na pasta movida.

Eu tenho mesmo problema (windows 10 ambiente) ao tentar atualizar meu nó 8.8.0 com npm 5.5.1 para o nó 9.8.0 mas a instalação do nó 9.8.0 não atualizar meu npm de 5.5.1 para o mais recente. Depois disso, tento npm i -g npm e obtenho o erro:

C:\Repository\myproject>npm i -g npm
npm WARN npm npm does not support Node.js v9.8.0
npm WARN npm You should probably upgrade to a newer version of node as we
npm WARN npm can't make any promises that npm will work with this version.
npm WARN npm Supported releases of Node.js are the latest release of 4, 6, 7, 8.
npm WARN npm You can find the latest version at https://nodejs.org/
WARNING: You are likely using a version of node-tar or npm that is incompatible with this version of Node.js.
Please use either the version of npm that is bundled with Node.js, or a version of npm (> 5.5.1 or < 5.4.0) or node-tar (> 4.0.1) that is compatible with Node.js 9 and above.
npm[19860]: src\node_zlib.cc:436: Assertion `args.Length() == 7 && "init(windowBits, level, memLevel, strategy, writeResult, writeCallback," " dictionary)"' failed.
 1: node::DecodeWrite
 2: node::DecodeWrite
 3: uv_loop_size
 4: v8::internal::wasm::SignatureMap::Find
 5: v8::internal::Builtins::CallableFor
 6: v8::internal::Builtins::CallableFor
 7: v8::internal::Builtins::CallableFor
 8: 000003BEBC8843C1

A solução de @arfaWong funcionou perfeitamente para mim (misturei um pouco com a solução de @rolf-schmidiger e renomeei em vez de mover)

É muito simples .. Se você estiver no Windows, por favor, verifique https://github.com/felixrieseberg/npm-windows-upgrade
Se você quiser fazer isso manualmente, por favor, verifique a documentação https://github.com/npm/npm/wiki/Trou troubleshooting#

Eu criei um script do PowerShell para automatizar a solução do @arfaWong : https://gist.github.com/noahleigh/ba34e18b3e0bc4a6a4e93ed7a480536e

Testado em PowerShell Core 6.0

Mesmo problema com

node-v8.6.0-win-x64
node-v9.9.0-win-x64

e se você renomear o arquivo ou movê-lo, ele falhará e não será possível criar a pasta, execute novamente como administrador. Afora o fato de que não tenho direitos de administrador nesta máquina, é duvidoso que isso mude alguma coisa, já que o usuário atual tem permissões mkdir nessa pasta ...

Quando isso será consertado?

@arfaWong rocks !!

Usei cmder , nvm 1.1.6 e node 8.10.0
Atualizado de npm 5.6.0 a 5.8.0: tada:

cd %programfiles%/nodejs
rm npm npm.cmd
mv node_modules/npm node_modules/npm2
node node_modules\npm2\bin\npm-cli.js i npm<strong i="17">@latest</strong> -g
rm -rf npm2

obrigado pela sua solução @ayvarot
Usei nvm 1.1.15 e node 9.8.0
Atualizado de 5.6.0 para 5.8.0

A solução de @ayvarot funcionou parcialmente para mim. Talvez devido ao fato de que eu estava executando em um msys git bash com ConEmu? De qualquer forma, este é meu snippet ajustado:

which npm && \
    cd "`which npm | xargs -0 dirname`" && \
    mv npm npm2 && \
    mv npm.cmd npm2.cmd && \
    mv ./node_modules/npm ./node_modules/npm2 && \
    node node_modules/npm2/bin/npm-cli.js i npm<strong i="7">@latest</strong> -g && \
    rm -r npm2 npm2.cmd ./node_modules/npm2

npm -v

(Usando nvm 1.1.6 no nó 8.10.0 x32 e atualizando de npm 5.6.0 para 5.8.0)

@arfaWong Funcionou ... Embora não seja o ideal ...
Vou esperar que a equipe do npm conserte ...
.
Enfrentei isso com npm 5.6.0

Uma versão simples do Windows DOS de @ayvarot 's

pushd %ProgramFiles%\nodejs
del npm npm.cmd
move node_modules\npm node_modules\npm2
node node_modules\npm2\bin\npm-cli.js i npm<strong i="8">@latest</strong> -g
rd node_modules\npm2 /S /Q
popd

A solução perfeitamente , obrigado!

Windows 10:
cd (sua pasta nodejs)
ren npm.cmd npm2.cmd
del npm
del npx

npm2 instalar npm -g

del npm2.cmd

Acabei de renomear npm e npx btw e excluí-os depois, mas acho que eles poderiam ser excluídos imediatamente.

Isso parece agora desencadeado pela instalação do Nodejs versão 10.0.0 usando nvm.

@arfaWong A única solução que funcionou galera. Experimente isso.

@rolf-schmidiger funcionou para mim! obrigado

Eu contornei isso usando o Yarn, que já tinha instalado.

nvm use 10.0.0

# Have npm remove itself
npm uninstall -g npm

# Install npm into the yarn directory structure
yarn global add npm

# Use npm to install itself into the nodejs directory structure
npm install -g npm

# Remove the yarn installation of npm
yarn global remove npm

Isso funcionou para mim:

nvm use <some_other_version>
cd .../nvm/<version_to_update>
npm un npm
npm i npm<strong i="6">@latest</strong>

use o fio em vez do próprio npm, tente yarn global add npm@latest , tente atualizar o fio se falhar.

Também recebi o erro Recusando-se a excluir ao tentar atualizar o npm usando npm install npm<strong i="6">@latest</strong> --global .

O pacote npm-windows-upgrade também não foi capaz de atualizar, sugerindo a reinstalação do Node.js, apesar de ser uma nova instalação de descompactação.

Consegui atualizar movendo os arquivos npm e npx, conforme sugerido anteriormente, usando este script PowerShell:

# Locate the Node.js installation
# containing the npm and npx files that are preventing the upgrade
Get-Command node.exe | % { Split-Path $_.Source } | cd

$CurrentNpmVersion = npm --version

# Version the current npm scripts to make room for the new version:
"npm", "npm.cmd", "npx", "npx.cmd" | %{ Get-ChildItem -Filter $_ } |
  Rename-Item -NewName { "$($_.BaseName)-$CurrentNpmVersion$($_.Extension)" }

# Use the current npm command to install the new version:
Invoke-Expression "npm-$($CurrentNpmVersion).cmd install npm<strong i="11">@latest</strong> --global"

Olá @awarberg , tentei seu script, mas recebo este erro. Eu tentei com fio também, sem sorte ... Windows estúpido! 💢

.\update_node.ps1
npm ERR! path C:\Program Files\nodejs\node_modules\npm\node_modules\worker-farm\node_modules\.bin\errno
npm ERR! code EEXIST
npm ERR! Refusing to delete C:\Program Files\nodejs\node_modules\npm\node_modules\worker-farm\node_modules\.bin\errno: is outside C:\Program Files\nodejs\node_modules\npm\node_modules\worker-farm\node_modules\errno and not a link
npm ERR! File exists: C:\Program Files\nodejs\node_modules\npm\node_modules\worker-farm\node_modules\.bin\errno
npm ERR! Move it away, and try again.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\vitom\AppData\Roaming\npm-cache\_logs\2018-05-11T12_55_55_902Z-debug.log

@lamuertepeluda, desculpe saber que você ainda não consegue atualizar O arquivo mencionado ...\node_modules\.bin\errno não foi mencionado anteriormente. Esta pode ser uma instalação corrompida devido a várias tentativas de atualização. Pode ser um bom momento para reinstalá-lo, como sugere o npm-windows-upgrade.

Quanto ao "Windows estúpido", não concordo. Mais provavelmente, o NPM foi projetado primeiro para Linux e o suporte para Windows foi acrescentado mais tarde, como uma reflexão tardia. Vejo isso regularmente em outros pacotes NPM também. Os problemas típicos são a dificuldade de instalação e requerem etapas manuais e não documentadas para garantir os pré-requisitos de software. Outro problema comum é o caminho do sistema de arquivos com distinção entre maiúsculas e minúsculas.

Eu fiz um script em lote para rodar automaticamente a solução

<strong i="7">@echo</strong> off
SETLOCAL EnableDelayedExpansion

if [%1] == [] (
    echo Pass in the version you would like to install, or "latest" to install the latest npm version.
) else (
    set wanted_version=%1

    if "!wanted_version!" == "latest" (
        for /f %%i in ('npm show npm version') do set wanted_version=%%i
    )

    for /f %%i in ('npm -g -v') do set cur_version=%%i

    if "!cur_version!" == "!wanted_version!" (
        echo Already on npm version !wanted_version!.
    ) else (
        echo Updating to !wanted_version!...

        set node_path=!PROGRAMFILES!\nodejs

        rename "!node_path!\npm" npm2
        rename "!node_path!\npm.cmd" npm2.cmd
        rename "!node_path!\node_modules\npm" npm2
        node "!node_path!\node_modules\npm2\bin\npm-cli.js" i npm@!wanted_version! -g

        for /f %%i in ('npm -g -v') do set new_version=%%i

        echo New version installed is !new_version!

        if "!new_version!" == "!wanted_version!" (
            echo Successfully updated to !wanted_version!. Cleaning up backups...
            del "!node_path!\npm2"
            del "!node_path!\npm2.cmd"
            <strong i="8">@RD</strong> /S /Q "!node_path!\node_modules\npm2"
            echo Update complete.
        ) else (
            echo Something went wrong. Rolling back.
            if exist "!node_path!\npm" (
                del "!node_path!\npm"
            )
            if exist "!node_path!\npm.cmd" (
                del "!node_path!\npm.cmd"
            )
            if exist "!node_path!\node_modules\npm" (
                <strong i="9">@RD</strong> /S /Q "!node_path!\node_modules\npm"
            )
            rename "!node_path!\npm2" npm
            rename "!node_path!\npm2.cmd" npm.cmd
            rename "!node_path!\node_modules\npm2" npm
        )
    )
)

Eu criei uma essência do script bat de @kufii . Ligeiramente modificado para que você possa especificar a versão a ser instalada em vez de sempre instalar o lastet.

https://gist.github.com/johnmcase/d31b799b9030327091a0e74880e4c530

--Editar: Atualizado para refletir o script atualizado de @kufii acima

@johnmcase boa ideia, atualizei meu comentário para que você possa passar a versão que deseja instalar como um argumento (ou "mais recente" para obter a versão mais recente)

A versão atualizada do @kufii funciona melhor para mim do que ter o número desejado codificado no script.

@kufii @arfaWong

Obrigado!!
notworthy

@johnmcase Worked gostou de um charme, bookmarking.

Apenas um problema encontrado com este script: quando optei por instalar 5.6 ele instalou 5.6.0 sucesso e está revertendo porque "5.6" é diferente de "5.6.0" ...
Obrigado pelo roteiro!

Tive o mesmo problema recentemente com o nvm versão 1.1.7
A solução de @arfaWong e @ayvarot funcionou da última vez. Mas desta vez Idkw a pasta npm não foi encontrada. Portanto, recomendo não excluir a pasta npm2 por precaução.

Passei quase dois dias depurando erros causados ​​por esse problema e tentei quase todas as correções para atualizar meu NPM de 5.6.0 para 6.1.0. A correção de @arfaWong funcionou para mim sem problemas adicionais. Obrigado!

@arfaWong Works !!

Eu fiz o método do fio, mas isso também deve funcionar:

  1. Pegue o npm em https://github.com/npm/cli/releases
  2. Execute o seguinte a partir do diretório para o qual você extraiu da pasta bin

    • node npm-cli.js i -g npm@latest

    • Ele pode reclamar de arquivos que precisam ser excluídos, para mim eu tinha meu nvm e nodejs em um diretório raiz em minha unidade, de modo que o local padrão do arquivo de programa não se aplica a mim. Eu removi o npm / npx / node_modules da minha pasta nodejs (não tenho medo de baixar os pacotes novamente e estou trabalhando com uma nova instalação agora mesmo).

  3. Deve ser instalado corretamente e você deve ser capaz de deletar a pasta que extraiu e lucrar!

Bastante semelhante a este stackoverflow que escrevi.
https://stackoverflow.com/questions/49748307/how-to-reinstall-npm

@ayvarot Muito obrigado !!!!!!!! Seu conselho funciona para mim no Windows 10.

Para mim funcionou apenas renomeando %Node%\npm.cmd , %Node%\npm e %Node%\npx.cmd , nenhuma renomeação de diretório foi necessária.

A solução sugerida por @peternann aqui também funciona.
https://github.com/coreybutler/nvm-windows/issues/389

Por algum motivo, o script acima não estava funcionando para mim e eu estava simplesmente cansado demais para descobrir o porquê.

Este bug ridículo ainda persiste, então fiz um script que faz o trabalho. Deve ser colocado dentro da pasta Node, onde npm.cmd vivem.

:: Update NPM with workaround of "npm ERR! code EEXIST" bug https://github.com/coreybutler/nvm-windows/issues/300

<strong i="7">@ECHO</strong> OFF

SETLOCAL

SET CDir=%~dp0%

REN "%CDir%\npm.cmd" "npm1.cmd"
DEL "%CDir%\npm"
DEL "%CDir%\npx.cmd"
DEL "%CDir%\npx"

CALL "%CDir%\npm1.cmd" update && DEL "%CDir%\npm1.cmd"

Salve isso como npmup.cmd e use em vez de npm update

ao usar o script de @kufii
Observe que o local de instalação deve ser substituído se você alterou o caminho do node.js como eu, basta substituir o código set node_path=!PROGRAMFILES!\nodejs por set node_path=YOUR_NODE_PATH

A solução @kraihn não funciona agora com o fio mais recente, a menos que você adicione a caixa de fios ao caminho:

  1. pegue a lixeira path por yarn global bin
  2. coloque a caixa de fios path em sua variável path

Uma vez por ano eu fico animado, decido instalar NVM no Windows pensando "desta vez vai funcionar", mas sempre há algo quebrado ... Bem, acho que está de volta ao instalador clássico do Node.js. Eu usaria WSL, mas, infelizmente, alguns aplicativos Electron exigem que você tenha o Node instalado no sistema operacional host.

Isso é realmente impossível de consertar apenas com NVM?
Pelo que li em tópicos diferentes, também seria um problema de npm ou Node, mas não há nada que o NVM sozinho possa fazer sobre isso? Caso contrário, esse problema torna o NVM inútil no Windows.
Ter que deletar arquivos enquanto estamos no meio do processo de atualização ou mesmo criar scripts para isso ou quaisquer outras soluções que algumas pessoas mencionaram, não é uma solução. É o inferno!
A única coisa que tentei (um comentário em outro tópico, não neste, mencionando algumas etapas sobre como usar o fio para adicionar npm) não funcionou.

@MrCroft embora eu concorde que seria bom tê-lo "apenas funcionando", as coisas estão longe do "inferno" e ainda mais longe de serem "inúteis".
Sou um usuário feliz desse projeto há cerca de 2 anos.
Esse problema ocorre apenas quando você deseja atualizar o próprio npm global. A instalação de novas versões de nó via nvm não tem problemas e novos nós vêm com pacotes npm mais recentes.
Se você se pega atualizando o npm com tanta frequência em seu ambiente de desenvolvimento que sua vida se torna um inferno por causa disso, então provavelmente você está fazendo algo errado.
Acho que apenas duas vezes, desde que me tornei um usuário nvm, tive que atualizar o próprio npm e encontrar esse problema. Não tão ruim quanto você faz parecer.

Este é meu script para atualizar o npm no nvm:

https://stackoverflow.com/a/50955293/491553

Acabei de fazer isso em uma nova instalação. Funciona bem.

Talvez alguém deva testar o atualizador npm SEM DIREITOS DE ADMINISTRAÇÃO ...

Acho que isso é mais um bug da versão anterior do npm do que do nvm .

No entanto, para atualizar o npm, exclua na pasta nvm/[node version] (para mim, é v10.15.3 ) os seguintes arquivos:

C:\Users\[user name]\AppData\Roaming\nvm\[node version]\npm
C:\Users\[user name]\AppData\Roaming\nvm\[node version]\npm.cmd
C:\Users\[user name]\AppData\Roaming\nvm\[node version]\npx
C:\Users\[user name]\AppData\Roaming\nvm\[node version]\npx.cmd

Renomear pasta npm para npm2

C:\Users\[user name]\AppData\Roaming\nvm\[node version]\node_modules\npm2

Abra qualquer console com direitos de administrador (ou mesmo clique com o botão direito do mouse no atalho vscode, em seguida, clique com o botão direito do mouse no código do Visual Studio e pressione Executar como administrador ) e digite os comandos:

cd C:\Users\[user name]\AppData\Roaming\nvm\[node version]\node_modules\npm2\bin
node npm-cli.js i -g npm<strong i="22">@latest</strong>

Atualização: como @ Fr0sT-Brutal apontou, os direitos de administrador não devem ser necessários neste momento, porque acabamos de excluir arquivos que criaram conflitos 👍

Feito.

Exclua a pasta C:\Users\[user name]\AppData\Roaming\nvm\[node version]\node_modules\npm2 .

(Isto é apenas uma reprodução passo a passo do que @ 19majkel94 disse acima)

@createdbyjurand : SEM direitos de administrador ...
Você não precisa de direitos de administrador para substituir um monte de arquivos por outro monte de arquivos ...
(contanto que você tenha acesso de gravação aos arquivos / diretórios)

@createdbyjurand : SEM direitos de administrador ...
Você não precisa de direitos de administrador para substituir um monte de arquivos por outro monte de arquivos ...
(contanto que você tenha acesso de gravação aos arquivos / diretórios)

Eu sei. Porém, a pasta Arquivos de Programas no Windows 10 tem acesso por direitos específicos. É por isso que muitos aplicativos se instalam recentemente nas pastas Roaming ou Local. Até mesmo o Visual Studio Code tem duas instalações separadas. Um para local e outro para arquivos de programa. Uma maneira de contornar isso é alterar a localização da pasta nvm nodejs. Em segundo lugar, altere as opções de Segurança de pasta, mas isso torna esta pasta insegura. O que eu escrevi, o que @ 19majkel94 escreveu, é uma solução para consertar a atualização do npm do jeito que está, usando a instalação nvm padrão com configurações padrão para pessoas que querem apenas consertar o problema sem se envolver em mais e mais mudanças de sistema ou configuração. Porque mesmo que você mude a pasta ou os direitos de acesso, ainda terá que seguir todas as etapas que listei, e a única mudança será usar o console sem direitos de administrador.

@createdbyjurand: Basta dizer, corremos nó em um ambiente corporativo, e como os desenvolvedores, não temos direitos de administrador. Se um npm-update ou um script nele requer direitos de administrador, isso quebra nosso ambiente de desenvolvimento, e então não podemos instalar nenhum pacote de nó e, então, não podemos trabalhar.

@createdbyjurand para que você precisa de direitos de administrador?

@createdbyjurand para que você precisa de direitos de administrador?

Bom ponto, não, porque acabei de deletar arquivos que estavam criando conflitos 👍

Ah eu vejo. Nunca imaginei ter NPM instalado no PF, pra mim é meio estranho. Eu diria que aqueles que o fazem são as razões de seus problemas :).

Ah eu vejo. Nunca imaginei ter NPM instalado no PF, pra mim é meio estranho. Eu diria que aqueles que o fazem são as razões de seus problemas :).

Recentemente sim. A Microsoft alterou os direitos de acesso da pasta Arquivos de Programas . É por isso que muitos softwares estão migrando agora para o diretório de instalação de pasta Roaming ou Local . E é por isso que não há muito tempo tudo estava funcionando bem com o npm, e agora de repente temos isto:

$ npm i -g npm<strong i="11">@latest</strong>
C:\Program Files\nodejs\npx -> C:\Program Files\nodejs\node_modules\npm\bin\npx-cli.js
npm ERR! path C:\Program Files\nodejs\npm
npm ERR! code EPERM
npm ERR! errno -4048
npm ERR! syscall open
npm ERR! Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\npm'
npm ERR!  { [Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\npm']
npm ERR!   cause:
npm ERR!    { Error: EPERM: operation not permitted, open 'C:\Program Files\nodejs\npm'
npm ERR!      errno: -4048,
npm ERR!      code: 'EPERM',
npm ERR!      syscall: 'open',
npm ERR!      path: 'C:\\Program Files\\nodejs\\npm' },
npm ERR!   stack:
npm ERR!    'Error: EPERM: operation not permitted, open \'C:\\Program Files\\nodejs\\npm\'',
npm ERR!   errno: -4048,
npm ERR!   code: 'EPERM',
npm ERR!   syscall: 'open',
npm ERR!   path: 'C:\\Program Files\\nodejs\\npm' }
npm ERR!
npm ERR! The operation was rejected by your operating system.
npm ERR! It's possible that the file was already in use (by a text editor or antivirus),
npm ERR! or that you lack permissions to access it.
npm ERR!
npm ERR! If you believe this might be a permissions issue, please double-check the
npm ERR! permissions of the file and its containing directories, or try running
npm ERR! the command again as root/Administrator (though this is not recommended).

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\fehTH4RTH\AppData\Roaming\npm-cache\_logs\2019-03-22T14_28_26_153Z-debug.log

Ah eu vejo. Nunca imaginei ter NPM instalado no PF, pra mim é meio estranho. Eu diria que aqueles que o fazem são as razões de seus problemas :)

@ Fr0sT-Brutal bem, pelo bem da organização, eu também o faço. Se já tenho uma pasta de sistema designada para aplicativos (Arquivos de Programas), sempre que instalo alguma coisa - instalo na pasta "Arquivos de Programas". Principalmente para não poluir a pasta raiz da unidade com pastas aleatórias como "nodejs" ou "nvm" e também para não chegar a caminhos longos, como "c: / Usuários / Meu nome / Roaming / ApplicationData / qualquer coisa", eu prefiro "c : / Arquivos de programas / qualquer coisa ".
No entanto, embora tivesse realmente me incomodado trabalhar assim (ter nvm | node em um lugar fora dos arquivos de programa), ainda ... Eu pelo menos tentei e instalei em c: / nvm (como para versões do nó, tentei c: / nó e como uma subpasta de nvm: c: / nvm / nó algo parecido). Mas o problema persistia, npm ainda não podia ser atualizado executando npm i -g npm . Graças a Deus, porque eu não gostaria de viver com coisas instaladas fora da pasta Arquivos de Programas. É claro que finalmente desisti e ainda uso 1 versão do nó o tempo todo, instalado usando o instalador de nó padrão para Windows de nodejs.org

@createdbyjurand recentemente? IIRC, PF tornou-se restrito a gravação para um usuário desde o XP.
@MrCroft Sempre me perguntei como as pessoas poderiam viver com todas as coisas enterradas dentro do PF ... Espaço no caminho significa que a cotação é sempre necessária, a loucura com x64-PF e x32-PF adiciona uma iteração para pesquisa e - o mais frustrante - um estrutura de software totalmente plana. Tenho> 100 aplicativos até no PC doméstico e 50 aplicativos ainda mais no trabalho. Eu pularia de uma janela se tivesse que procurar aplicativos dentro do PF.

Você não tem que colocá-lo em
C:/Users/My Name/Roaming/Whatever
você pode usar qualquer diretório, desde que seja gravável pelo usuário.

Tenho todos os programas em D: Programs, nenhum deles requer direitos de administrador, incluindo nodejs, python, cmake, JetBrains, go, OpenOffice, etc.

Em seguida, coloquei todos eles nas variáveis ​​de ambiente do caminho e no registro de current_user.
Funciona como um encanto.
Não são necessários instaladores de caixa preta ruins.

Se preciso encontrar alguma coisa, eu uso o locate32, nem procuro nas pastas / Desktop / StartMenu.
Locate32 é muito mais rápido.
Ou eu os executo via CTRL + R, já que você pode definir os aliases no registro em HKCU.

A única razão para ter algo em C:\ProgramFiles é quando você deseja instalar um determinado aplicativo para cada usuário na máquina, o que, como desenvolvedor, na maioria dos casos, você não deseja, já que tem programas no caminho / registro de todo o sistema pode quebrar os programas de outros usuários ou inibir sua capacidade de usar uma versão diferente da versão que você usa. Além disso, é útil no servidor - o usuário1 pode usar seu nodejs, o usuário2 outro nodejs, e não morde a si mesmo.

Ao remover os direitos de administrador e manter tudo no usuário, você garante que um usuário não possa quebrar os programas e configurações de outro usuário. Além disso, você garante que seus aplicativos sejam executados sem direitos de administrador, o que pode ser útil às vezes. E, na pior das hipóteses, você sempre pode excluir e limpar uma conta de usuário e recriá-la mais tarde.

Dessa forma, posso executar cerca de 1.000 programas, tudo sem um único minuto gasto na instalação.
Mesmo JetBrains IDE e PostgreSQL funcionam dessa forma.
Os únicos programas que não consegui fazer funcionar assim são MS-Office, SQL-Server e Visual-Studio.
O npm não deve ser adicionado a essa lista de má reputação, e tudo porque ele não se preocupa em mover alguns arquivos existentes em vez de sobrescrevê-los.

De qualquer forma, agora tenho meu próprio nodejs-update-script , que detecta a pasta nodes da variável de ambiente path.

Acabei de renomear esses arquivos para "1"
npm1.cmd, npm1, npx1, npx1.cmd

e correu:
" atualização npm1 -g "

Parece que funcionou bem, alguma ideia?

talvez isso possa ser integrado ao nvm - talvez adicionando um sinalizador de versão npm junto com a versão do nó e sinalizador de arquitetura na instalação e uma função update-nvm

Acabei de renomear esses arquivos para "1"
npm1.cmd, npm1, npx1, npx1.cmd

e correu:
" atualização npm1 -g "

Parece que funcionou bem, alguma ideia?

Funcionou para mim também, mas tive que deletar a pasta
nvmv10.15.3node_modulesnpmnode_modules.bin
porque o erro apontando para esta pasta ainda apareceu.

Obrigado!

Olá pessoal, fiz um pacote para atualizar a versão npm local do programa Filesnodejs
Verificação de saída
npm install -g npm-win-upgrade
npm-win-upgrade

Não tenho certeza se é compatível com o NVM, mas usa process.execPath para localizar a pasta node.exe, então deveria.

@dolpsdw Recebo o seguinte erro ao executar npm-win-upgrade :

Npm instaled as Global package: uninstalling...                                                                     
(node:10192) UnhandledPromiseRejectionWarning: Error: Command failed: npm uninstall npm -g                          
npm ERR! path C:\Program Files\nodejs\npx.cmd                                                                       
npm ERR! code EEXIST                                                                                                
npm ERR! Refusing to delete C:\Program Files\nodejs\npx.cmd: is outside C:\Program Files\nodejs\node_modules\npm and
 not a link                                                                                                         
npm ERR! File exists: C:\Program Files\nodejs\npx.cmd                                                               
npm ERR! Move it away, and try again.                                                                               

npm ERR! A complete log of this run can be found in:                                                                
npm ERR!     C:\Users\sjodle\AppData\Roaming\npm-cache\_logs\2019-04-23T17_42_11_305Z-debug.log                     

    at ChildProcess.exithandler (child_process.js:281:12)                                                           
    at emitTwo (events.js:126:13)                                                                                   
    at ChildProcess.emit (events.js:214:7)                                                                          
    at maybeClose (internal/child_process.js:915:16)                                                                
    at Process.ChildProcess._handle.onexit (internal/child_process.js:209:5)                                        
(node:10192) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing
 inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (
rejection id: 1)                                                                                                    
(node:10192) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejec
tions that are not handled will terminate the Node.js process with a non-zero exit code.                            

Olá @sodle ,

O primeiro erro (nó: 10192 Falha no comando: npm desinstalar npm -g): ocorre porque o npm detectou como global instalado na pasta% appdata% npm, mas pode ser o resto de um cache de nó antigo. Isso pode ser corrigido com uma detecção npm list -g.

Sobre o segundo erro para mim aquele erro de 'Recusando-se a deletar' ... soa como os privilégios de Admin onde não há autorização no processo. (UAC promp foi negado?)

Tente executar o script e aceitar a escala de privilégios de Admin, e se isso não corrigir, diga-me sua versão do nó do Origin para reproduzir o bug.

@dolpsdw Tenho certeza de que ambos são parte do mesmo erro - o npm se recusa a excluir o arquivo porque ele está extraviado ou algo assim.

De qualquer forma, não tenho mais a máquina em que ocorreu o erro. Avisarei você se encontrar os mesmos problemas ao substituí-lo.

Ola @rsshilli
obrigado por fornecer o script. Ele funciona muito bem e atualiza o npm para a versão mais recente conforme desejado.
O único problema menor que enfrentei foi que executar npm list -g --depth=0 para listar todos os pacotes de nós resultou em duas instalações do npm.
Então, simplesmente adicionei algumas linhas de código para remover os arquivos renomeados "...- old" e a pasta renomeada "...- old".
A execução de npm list -g --depth=0 para listar todos os pacotes de nós resultou em uma única instalação do npm conforme desejado.
Aqui está minha versão atualizada do seu script:
cd %APPDATA%\nvm\v8.9.0 # or whatever version you're using
mv npm npm-old
mv npm.cmd npm-old.cmd
cd node_modules\
mv npm npm-old
cd npm-old\bin
node npm-cli.js install -g npm@latest

cd %APPDATA%\nvm\v8.9.0 # or whatever version you're using
rm npm-old
rm npm-old.cmd
cd node_modules\
rm -rf npm-old

Este é meu script para atualizar o npm no nvm:

https://stackoverflow.com/a/50955293/491553

Acabei de fazer isso em uma nova instalação. Funciona bem.

@dolpsdw npm-win-upgrade falhou com os mesmos erros de npm install -g npm .
Existe outro pacote npm-windows-upgrade , que também falha, mas não diz por que (presumo que seja o mesmo).

@ Markus-Hanisch @rsshilli Obrigado por esse script.

Tomando isso como ponto de partida, gostaria de adicionar o seguinte script do PowerShell generalizado, que permite que você atualize o NPM independentemente da sua versão do Node atual e localização do nvm:

Push-Location (Join-Path (Split-Path (Get-Command nvm).Path) (node --version))
  Move-Item npm npm-old
  Move-Item npm.cmd npm-old.cmd
  Move-Item npx.cmd npx-old.cmd
  Push-Location .\node_modules
    Move-Item npm npm-old
    Push-Location .\npm-old\bin
      node npm-cli.js install -g npm<strong i="8">@latest</strong>
    Pop-Location
    Remove-Item npm-old -Recurse
  Pop-Location
  Remove-Item npx-old.cmd
  Remove-Item npm-old.cmd
  Remove-Item npm-old -Recurse
Pop-Location

(a única suposição é que nvm armazena suas versões junto com seu arquivo exe, e os nomeia de acordo com a saída de node --version )

Leia este tópico; no final, tive a melhor sorte ao desinstalar e reinstalar o node.js usando adicionar / remover programas.

O problema estava sendo corrigido para mim há um ano, ligando o mac;)

@kuncevic

O problema estava sendo corrigido para mim há um ano, ligando o mac;)

Corrigido:
O problema estava sendo evitado por mim há um ano, ligando o mac;)
: rofl:

@kuncevic , @ Fr0sT-Brutal:
E abrindo mão da liberdade de escolha quando se trata de hardware.
Não é uma boa troca.
Além disso, você está perdendo o controle sobre o software executado em seu computador.
Se você precisa mudar para algum lugar, mude para Linux - essa é a escolha muito melhor, para coisas de servidor de qualquer maneira.

https://blog.npmjs.org/post/189618601100/binary-planting-with-the-npm-cli

Eu deixei cair nvm para janelas. Após 2 anos, ele ainda não funciona corretamente, mesmo com a versão de nó mais recente

Pessoal, este é um problema de NPM, não um problema de NVM4W. Há um utilitário para ajudar com isso, disponível em https://github.com/felixrieseberg/npm-windows-upgrade.

Acabei de renomear esses arquivos para "1"
npm1.cmd, npm1, npx1, npx1.cmd

e correu:
" atualização npm1 -g "

Apenas renomeie o arquivo npm1.cmd , é o suficiente. Em seguida, execute a atualização npm .

Não há necessidade de usar npm-windows-upgrade .

@coreybutler Não estou totalmente convencido disso. npm-windows-upgrade não funcionou para mim. Então, depois de limpar manualmente os scripts de nível superior (os mesmos que os outros estão renomeando aqui, e também os npx), node (Join-Path $env:NVM_SYMLINK 'node_modules\npm\lib\npm.js') install -g npm funcionou inicialmente e npm install -g npm trabalhou para uma atualização posterior sem intervenção manual . Parece que a instalação inicial do npm foi interrompida de alguma forma.

Mesmo que seja de alguma forma a falha do npm por ter um instalador quebrado ou algo em vez do nvm, uma etapa que o nvm pode realizar para aliviar o problema é limpar esses scripts e invocar uma atualização imediatamente ao criar o ambiente de versão inicial. Ou pelo menos pode fornecer uma opção ou comando para fazer isso.

@kuncevic Sugestão para melhorar suas instruções:

Em vez de copiar os arquivos para frente e para trás ou tentar movê-los rapidamente enquanto o processo está em execução, apenas invoque o script do npm diretamente com o comando node.

PowerShell:

node (Join-Path $env:NVM_SYMLINK 'node_modules\npm\lib\npm.js') install -g npm

Prompt de comando:

node "%NVM_SYMLINK%\node_modules\npm\lib\npm.js" install -g npm

Em seguida, você pode remover os arquivos apenas uma vez e reiniciar o processo sem colocá-los de volta, se necessário.

@ bladeoflight16 Tentei, mas recebi este erro.

C:\Users\woonk>node %NVM_SYMLINK%\node_modules\npm\lib\npm.js install -g npm
internal/modules/cjs/loader.js:796
    throw err;
    ^

Error: Cannot find module 'C:\Program'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:793:17)
    at Function.Module._load (internal/modules/cjs/loader.js:686:27)
    at Function.Module.runMain (internal/modules/cjs/loader.js:1043:10)
    at internal/main/run_main_module.js:17:11 {
  code: 'MODULE_NOT_FOUND',
  requireStack: []
}

@ mattdamon108 Desculpe. Você precisa citar o caminho em cmd se houver espaços. Eu atualizei a postagem. Obrigado.

Estava recebendo este erro no Windows e queria reverter para um npm mais antigo para um projeto e de uma maneira muito suave, eu apenas fui para o local do link simbólico já formado do comando npm e renomeei a pasta npm em node_modules para seu próprio nome de versão e baixei a versão que eu precisava e criei uma pasta chamada npm e despejei o conteúdo baixado que funcionou!

@coreybutler sua sugestão de criar um link simbólico não funcionou, pois o Windows reclamou que um link simbólico já existia. Também no Windows, é difícil editar um link simbólico rapidamente. Além disso, eu precisava alternar entre as 2 versões do npm regularmente. Portanto, eu fiz isso.

Acabei de renomear esses arquivos para "1"
npm1.cmd, npm1, npx1, npx1.cmd
e correu:
" atualização npm1 -g "

Apenas renomeie o arquivo npm1.cmd , é o suficiente. Em seguida, execute a atualização npm .

Não há necessidade de usar npm-windows-upgrade .

@xmedeko @chidveer Talvez eu esteja faltando alguma coisa aqui, mas npx npm-windows-upgrade mais direto do que renomear manualmente os arquivos antes de executar npm update ?

@jakobrosenberg npm-windows-upgrade não funcionou para mim. Talvez eu tenha feito algo errado, talvez eu tenha tentado fazer um upgrade ou algo assim. IMO renomear um arquivo é mais simples do que estudar, por que npm-windows-upgrade não está funcionando e como consertar.

Nota: é recomendado usar npm-windows-upgrade globalmente, então você o executa como npm-windows-upgrade , não npx npm-windows-upgrade .

@xmedeko não seria npx npm-windows-upgrade executado globalmente a menos que você esteja dentro de um projeto de nó com uma instalação local de npm-windows-upgrade ?

@jakobrosenberg Sim, você está certo, eu não sabia que npx se comportava assim, eu sempre o uso apenas para pacotes de projetos locais.

funciona como charme
apenas certifique-se de que 'set node_path =! PROGRAMFILES! nodejs' está apontando o caminho correto no seu caso
especificamente no caso de nenhuma instalação padrão (extrato zip)

O mesmo problema!
como eu resolvi isso:

  1. Painel de controle => Desinstalar um programa
  2. Excluir aplicativo NodeJS
  3. Excluir todas as pastas NodeJS nos arquivos de programa
  4. Nó JS de instalação nova

Eu só precisava da Etapa 4, ou seja, basta baixar e instalar o Node JS.
Então funcionou.

Reinstalar a versão do nó funciona bem, mas como esse é um problema associado a nvm , por que não usar o poder de nvm para corrigir o problema? Para mim, em vez de passar por adicionar / remover programas, era muito mais rápido / simples manter tudo na linha de comando. Por exemplo:

nvm uninstall VERSION
nvm install VERSION

Depois disso, feche e reabra a casca. Rápido e fácil (agora que você sabe, pelo menos). 😄

Se você tiver algum problema (por exemplo, nvm indica que a versão já está instalada), verifique se a pasta associada a essa versão ainda existe (por exemplo, %NVM_HOME%\VERSION ) e se o arquivo node.exe ainda não está lá. Se ele ainda estiver lá, certifique-se de que você ainda não tenha nenhum nó de aplicativos potencialmente em execução (por exemplo, no meu caso meu IDE estava executando, então fechei e consegui remover completamente).

EDITAR: ⚠️ Suponho que esta solução simples tenha um efeito colateral importante: ela removerá seus pacotes instalados globalmente ... hmm ... pode ser mais simples reinstalá-los manualmente. Esteja avisado! ⚠️

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

Questões relacionadas

leiamac picture leiamac  ·  4Comentários

fredericrous picture fredericrous  ·  3Comentários

Deilan picture Deilan  ·  4Comentários

Pomax picture Pomax  ·  3Comentários

SufyanParkar picture SufyanParkar  ·  4Comentários