Nvm-windows: Por que não funciona para mudar a versão do nó via "uso nvm"

Criado em 11 dez. 2017  ·  43Comentários  ·  Fonte: coreybutler/nvm-windows

Se esta é uma pergunta 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

  • [x] Windows 7 ou inferior (não é realmente compatível devido ao EOL - consulte o wiki para obter detalhes)

Estou usando a versão NVM4W:

  • [x] 1.1.6

Eu já...

  • [x] leia o README para estar ciente dos problemas do npm e antivírus.
  • [x] revisou o wiki para ter certeza de que meu problema ainda não foi resolvido.
  • [] verificado Estou usando uma conta com privilégios administrativos.
  • [] procurou os problemas (abertos e fechados) para ter certeza 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+?)
  • [] Um ambiente de shell padrão (terminal / powershell)
  • [] Um ambiente de shell não padrão (Cmder, Hyper, Cygwin, git)

Comportamento esperado

Tentei mudar de v8.9.1 para 6.12.0 (versão de nó)

Comportamento Real

mas não mudou para 6.12.0 ou outras versões.
(eu instalei o 8.9.1 finalmente)

Etapas para reproduzir o problema:

eu abri cmd via administrador.

C: Windowssystem32> nvm ls

  • 8.9.1 (Atualmente usando executável de 64 bits)
    7.1.0
    6,12,0

C: Windowssystem32> node -v
v8.9.1

C: Windowssystem32> nvm use 6.12.0
Agora usando o nó v6.12.0 (64 bits)

C: Windowssystem32> node -v
v8.9.1

C: Windowssystem32> nvm ls

  • 8.9.1 (Atualmente usando executável de 64 bits)
    7.1.0
    6,12,0

Comentários muito úteis

Gambiarra:
"C: Program Filesnodejs" renomeado para "C: Program Filesnodejsx",
Então, de um cmd elevado chamado "nvm use 8.9.1" (qualquer versão que você tiver deve funcionar ..) e começou a funcionar.
O problema parece ser se o diretório nodejs existir, o nvm não pode alterá-lo para um link simbólico e 'falha silenciosamente' seria bom com uma falha e uma mensagem de erro informando o problema.

Todos 43 comentários

o mesmo

+1

Mesmo com nvm 1.1.5:

C:\windows\system32>nvm version
1.1.5

C:\windows\system32>nvm ls

    8.9.2
  * 4.7.2 (Currently using 64-bit executable)

C:\windows\system32>nvm use 8.9.2
Now using node v8.9.2 (64-bit)

C:\windows\system32>node -v
v4.7.2

C:\windows\system32>

@biologeek mesma coisa: /
você achou alguma solução?

Isso ocorre com mais freqüência devido ao uso de uma conta de usuário sem privilégios. Sua conta deve ter permissões de nível de administrador, porque o Windows exige isso para links simbólicos. nvm use cria um link simbólico para a instalação do Node apropriada. Se o seu link simbólico existe dentro de C:\Program Files , você precisará de permissões elevadas (o nvm4w tentará fazer isso para você automaticamente).

Eu sou o administrador do meu pc. Embora eu pudesse superar esse problema, renomeando manualmente as pastas para que o link simbólico nvm aponte para a versão que eu preciso.
Rápido e sujo, mas sem necessidade de acesso de administrador!

@biologeek - você ainda precisa de acesso de administrador para renomear diretórios dentro de C:\Program Files porque é um diretório protegido no Windows (o mesmo é verdadeiro para C:\windows\system32 ). Pessoalmente, mantenho meu link simbólico NVM4W em meu diretório de usuário, então isso não é um problema.

1 sobre este assunto: Não consigo alterar a versão.

Gambiarra:
"C: Program Filesnodejs" renomeado para "C: Program Filesnodejsx",
Então, de um cmd elevado chamado "nvm use 8.9.1" (qualquer versão que você tiver deve funcionar ..) e começou a funcionar.
O problema parece ser se o diretório nodejs existir, o nvm não pode alterá-lo para um link simbólico e 'falha silenciosamente' seria bom com uma falha e uma mensagem de erro informando o problema.

Pode confirmar o que @ituasdu disse. Obrigado!

@ituasdu resolveu meu problema, obrigado

Oi, mesmo problema aqui.

O NVM cria um link simbólico para a versão do nó instalada.

O problema é que o Windows 7 requer níveis de direitos de administrador para criar um link simbólico, e não é mais o caso no Windows 10.

Uma solução alternativa é usar junções (links 'físicos') no Windows 7 com o parâmetro '/ J'. As junções não exigem níveis de direitos de administrador e contas de usuário com poucos privilégios, pois as minhas podem usá-las. Exemplo:

nvm install 8.11.2
mklink /D /J node C:\PATH_TO_NVM\nvm\v8.11.2

Pergunta: Não seria uma boa ideia usar junções em vez de links simbólicos? Ou, pelo menos, especifique uma opção para nvm, por exemplo, '--junctions'?

Estou pensando em criar uma solicitação pull para isso, pois está bloqueando minha empresa. Isso seria útil?

@ nan0 fazer uma junção no windows 7 não está funcionando ... ainda não muda de versão.

C:\Program Files\nodejs contém v6.9.4 (instalado antes de NVM4W instalado).

C:\Users\[user]\AppData\Roaming\nvm contém v6.9.4\ e v8.11.3\

Eu executei o comando que você forneceu em sua postagem:

Problema 1:
mklink /D /J node C:\Users\[user]\AppData\Roaming\nvm\v8.11.3 quando tento fazer isso para a v6.9.4, ele diz "Não é possível criar um arquivo quando esse arquivo já existe."

Edição 2:
Além disso, usar nvm use v8.11.3 e nvm list não indica que ele realmente está usando qualquer uma das versões de nó instaladas do nvm.

Existe mais alguma coisa que pode ser feita?
Como posso ver as junções que são criadas? Onde eles realmente existem?

Estou a usar:
Windows 7. sem direitos de administrador permitidos para o meu usuário.

não importa se ele funciona. Percebi que estava colocando junction na pasta errada.

renomeando C: Program Filesnodejs para C: Program Files nodejsx
e fazer a junção como "nodejs" e apontar para C:\Users\[user]\AppData\Roaming\nvm\v8.11.3 funcionou!

Então, para resumir, a solução é esta:

sem nenhum nó independente instalado.

Na pasta C:\Program Files\ use cmd para executar mklink /D /J nodejs C:\Users\[user]\AppData\Roaming\nvm\v8.11.3

Aos interessados ​​em contribuir, obrigado!

Contudo; Quero salientar que as junções foram evitadas explicitamente porque não funcionam em discos rígidos diferentes. Este foi um ponto particularmente dolorido em redes corporativas com unidades compartilhadas / unidades mapeadas.

@ituasdu Isso resolveu meu problema,
Obrigado pela solução.

Meu computador é o Windows 7 e tenho privilégios de administrador. Na mesma situação, NVM não pode mudar a versão. Minha abordagem é configurar NVM_SYMLINK D: Projeto NVM v8.11.4 na variável de ambiente. A troca de versões de nó requer apenas a mudança do número da versão correspondente ao caminho NVM da variável de ambiente, como: NVM_SYMLINK D: Projeto NVM v6.9.0. Desta forma, embora o problema fosse resolvido, cada vez que eu mudava a versão, ficava incômodo e não encontrava solução melhor no momento.

A solução de "Sagan" de estouro de pilha funciona para mim:
https://stackoverflow.com/questions/28313372/nvm-for-windows-not-working

Para mim,

nvm list 

image

Em seguida, removo a pasta v8.9.4 do nvm.
image

Depois disso:

nvm list 

image

Então, eu movo v8.9.4 de volta.

Isso está acontecendo comigo no Windows 10 10.0.17134.165
Tentei a solução mencionada por @ituasdu e funcionou. obrigada!!!

Se você descobriu isso depois de tentar cmd como:
nvm use 6.10.0
e a versão do nodejs não foi alterada, você pode iniciar o cmd.exe ou o PowerShell pelo administrador.
image

Tive o mesmo problema ao alternar entre o nó 6.6.0 e 7.9.0 (Windows 10) mas a solução do ituasdu não estava funcionando. A reinstalação do nvm também não funcionou.

Eu executei o nvm install mais recente (instalado 11.3.0) e isso de alguma forma consertou para mim.

Gambiarra:
"C: Program Filesnodejs" renomeado para "C: Program Filesnodejsx",
Então, de um cmd elevado chamado "nvm use 8.9.1" (qualquer versão que você tiver deve funcionar ..) e começou a funcionar.
O problema parece ser se o diretório nodejs existir, o nvm não pode alterá-lo para um link simbólico e 'falha silenciosamente' seria bom com uma falha e uma mensagem de erro informando o problema.

Isso funcionou para mim.
image

PS > nvm use 11.4.0
Now using node v11.4.0 (64-bit)
PS > node -v
v10.11.0
PS > nvm use 11.4.0
Now using node v11.4.0 (64-bit)
PS > node -v
v11.4.0

@ituasdu funcionou para mim também .. obrigado .. :)

Obrigado @ituasdu , funcionou como um encanto. Acredito que isso aconteça quando as pessoas instalam o NodeJS anteriormente diretamente sem o nvm e depois tentam usar o nó através do nvm.

Isso também funciona para mim, obrigado.

Não sei se isso poderia lançar alguma luz sobre o problema, mas no meu caso, acho que isso aconteceu depois de instalar uma nova versão do node sem nvm (manualmente). Parece que essa ação deixa o nvm louco.

@coreybutler alguma

Outra dor é o que estou sofrendo atualmente (não por causa do nvmw) onde, embora eu realmente tenha privilégios de administrador em alguns casos, toda vez que eu quiser alternar entre as versões do nó, tenho que abrir uma outra janela cmd inteira, execute cmd como admin e finalmente execute nvm use 10.15.1 (por exemplo). em seguida, navegue de volta para minha janela dev, cmd. argh. novamente, dor devido ao ambiente de trabalho, não por causa de nvmw. (nvmw é incrível aliás).

apenas um pensamento. ;-)

Executar nvm use <node.js version you want to use> (por exemplo, nvm use 10.15.3 ) no Powershell ISE como administrador resolveu o problema no meu Windows 10.

Tenho que executar nvm use any.version várias vezes no Powershell como administrador para fazê-lo funcionar. Ele muda de versão aleatoriamente na primeira, segunda ou terceira tentativa (nvm versão 1.1.7).

Tentei consertar instalando o Link Shell Extension e executando as seguintes etapas:

  1. clique com o botão direito em C:\Program Files\nodejs
  2. selecione _Pick Link Source_
  3. clique com o botão direito em C:\Program Files
  4. selecione _Soltar como ..._> _Link simbólico_
  5. renomear nodejs - SymbolicLink para nodejsx

Mas, infelizmente, o problema ainda está ocorrendo.

Posso confirmar que a solução @ituasdu funcionou para mim também.

@ituasdu funciona para mim, obrigado.

@ monico-moreno - da próxima vez, envie um ping por e-mail quando eu não responder por meses a fio :) Para responder à sua pergunta, você pode instalar em qualquer pasta que quiser usando o instalador. Contudo; todos os links simbólicos no Windows requerem privilégios de administrador, exceto para alguns modos de desenvolvedor em edições mais recentes do Windows 10. O ponto principal é que os privilégios de administrador entram em ação em algum ponto.

Além disso, talvez você possa testar a versão beta do sistema de menus quando eu finalizá-lo (alternar as versões na barra de tarefas do Windows). Isso seria um fluxo de trabalho melhor?

  • Abra o painel de controle e desinstale o nvm e o nó.
  • instale nvm-setup.zip em https://github.com/coreybutler/nvm-windows/releases
  • prompt de comando aberto. Digite nvm install @version. então nvm usa a versão.
  • instale o fio. em seguida, no prompt de comando, execute yarn install ou yarn.
  • verifique a versão do nó por nó -v.

Eu apenas tive um problema semelhante, mas um motivo diferente.

D:\> node -v
v12.14.0
D:\> nvm use 8.9.4
Now using node v8.9.4 (64-bit)
D:\> node -v
v12.14.0

// problem
D:\> where node
D:\soft\nodejs\node.exe // <- old nvm used this one
C:\Program Files\nodejs\node.exe // <- new nvm was changing this one

O IIRC I tinha uma versão nvm anterior instalada em D: soft e estava mudando o link D: softnodejs. Em algum ponto, o antigo nvm parou de funcionar, porque o repositório npm mudou de local (se funcionar - não toque, por favor). Tive que instalar um novo nvm e acho que o novo nvm se recusou a alterar o link antigo, em vez disso, ele estava atualizando o link C: Program Filesnodejs. Então, eu removi D: softnodejs e foi corrigido.

Obrigado a @delepster que sugeriu desinstalar o nó antigo, que me ajudou a identificar o problema

nós instalamos em três computadores hoje, dois deles com sistema operacional windows 10 instalado e um com servidor windows. Ambas as máquinas com sistema operacional Windows 10 perderam a busca por recursos de inicialização, mas não aquela com sistema operacional Windows Server. então, você não pode digitar o nome do programa que deseja e ver mais.

Alguém mais com o mesmo problema?

@putko este é um problema do Windows que apareceu hoje, confirmado e corrigido pela MS. veja este tweet https://twitter.com/tomwarren/status/1225110095010418689

Gambiarra:
"C: Program Filesnodejs" renomeado para "C: Program Filesnodejsx",
Então, de um cmd elevado chamado "nvm use 8.9.1" (qualquer versão que você tiver deve funcionar ..) e começou a funcionar.
O problema parece ser se o diretório nodejs existir, o nvm não pode alterá-lo para um link simbólico e 'falha silenciosamente' seria bom com uma falha e uma mensagem de erro informando o problema.

Isso funcionou para mim.
image

PS > nvm use 11.4.0
Now using node v11.4.0 (64-bit)
PS > node -v
v10.11.0
PS > nvm use 11.4.0
Now using node v11.4.0 (64-bit)
PS > node -v
v11.4.0

Isso funcionou para mim também.

Tive um problema semelhante com 1.1.7 , finalmente descobri que o arquivo settings.txt é ignorado. nvm use não faria absolutamente nada, até que eu definisse manualmente NVM_SYMLINK . Além disso, sem o SYMLINK definido, o nvm tentará remover . , o que é interessante, para dizer o mínimo.

O parâmetro path em settings.txt , que contém o que deve ser usado por padrão como SymLink, nunca é lido ou usado para inicializar:
https://github.com/coreybutler/nvm-windows/blob/88353cfcea140e02e2b13584fd89454adc9f52b3/src/nvm.go#L727 -L751

A versão mais recente do Windows 10 Pro, em que fiz uma nova instalação, encontrei o mesmo problema.

Minhas etapas habituais para configurar minha máquina são:

  1. Instale dependências primárias (NodeJS e Docker)
  2. Instale o IDE (Visual Studio 2019 neste ponto com dependências de desenvolvimento .NET, NodeJS e Python)
  3. Instale dependências adicionais como Terminal Windows, fontes PL, nvm, tmux, WSL2, etc ...

@ituasdu está correto em sua afirmação, quando

Sei que há uma linha dizendo que devemos desinstalar o nó existente que perdi da primeira vez no README.md, mas tendo usado o nvm-windows antes de não verificar novamente, acabei de instalar via chocolatey e esqueci disso . (é possível apenas fazer a desinstalação do npm como parte da instalação do chocolatey ou apenas detectar se há um e solicitar que o usuário o desinstale antes de permitir que ele instale o nvm?)

(é possível apenas fazer a desinstalação do npm como parte da instalação do chocolatey ou apenas detectar se há um e solicitar que o usuário o desinstale antes de permitir que ele instale o nvm?)

Eu acho que é possível: esta solicitação deve ser feita ao mantenedor do pacote Chocolatey nvm .

Acontece quando você tem o Node instalado separadamente em sua máquina (do site ou gerenciador de pacotes). Desinstalá-los e instalá-los por meio do nvm deve resolver o problema.

Estou tendo o mesmo problema e usar o PS no modo de administrador não resolve o problema. (Windows 10.0.18363)

image

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