Nvm-windows: não funciona com .nvmrc

Criado em 20 mai. 2016  ·  8Comentários  ·  Fonte: coreybutler/nvm-windows

Meu ambiente

  • [x] Windows 7 ou inferior (não é realmente compatível devido ao EOL)
  • [] Windows 8
  • [] Windows 8.1
  • [] 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.

    Eu já...

  • [x] leia o README para estar ciente dos problemas do npm e do antivírus.

  • [x] 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.
  • [x] 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 de proxy
  • [] Suporte de 32 ou 64 bits

    Comportamento esperado

Mesmo resultado que nvm use 4.4.4

Comportamento Real

Resultado: node v (64-bit) is not installed.

Etapas para reproduzir o problema:

criou um arquivo .nvmrc com 4.4.4 como a versão do nó.
vá para a linha de comando e execute nvm use na mesma pasta do arquivo.

duplicate wontfix

Comentários muito úteis

Pequeno solavanco para este problema. Apenas corri para ele.

Não pode ser seriamente tão difícil. Aqui está o que fazer se uma versão não for fornecida para nvm use :

  1. Obter versão de .nvmrc
  2. Esta versão está instalada? Se não -> instale-o
  3. Esta versão está em uso atualmente? Se não -> use.
  4. Feito

Em outras palavras, sem o número da versão especificado, nvm use é uma combinação de nvm install < .nvmrc e nvm use < .nvmrc (pseudo comando - na verdade não funcionará agora).

Não há muito mais nisso.

Todos 8 comentários

.nvmrc nunca foi compatível. Esse é um recurso específico para nvm, não NVM para Windows.

@coreybutler Eu sou do Projeto de Responsabilidade de Desastres e temos alguns desenvolvedores que usam o Windows e não podem aproveitar .nvmrc . Estamos começando a adotar nvm-windows para nossos desenvolvedores web voluntários e gostaria que você reconsiderasse o apoio a .nvmrc . Este é o site no qual usamos .nvmrc.

@ inunotaisho26 - Fundamentalmente, este projeto está focado em preparar o Node como se fosse instalado da mesma forma que o Node seria instalado sem um gerenciador de versão. .nvmrc começa a entrar em questões específicas de gerenciamento de ambiente, o que aumenta drasticamente o escopo do projeto. Eu vejo o "gerenciamento de ambiente" como um problema fundamentalmente diferente do "gerenciamento de versão". Discutimos esses diferentes casos de uso no grupo de trabalho de gerenciamento de versão .

Embora esse recurso tenha sido solicitado antes, não é algo que eu tenha tempo livre suficiente para oferecer suporte. Devido ao número de pessoas que solicitam soluções de gerenciamento de ambiente geral (além de apenas .nvmrc), estou testando ideias para um aplicativo de gerenciamento de ambiente comercial para agilizar esses processos. Os requisitos de tempo para apoiar a grande lista de desejos da comunidade exigirão financiamento ou patrocínio, então provavelmente vou me apoiar na infraestrutura que já construí para o Fenix . O problema: sem HEC.

Dito isso, consulte o roteiro . A solução "gratuita" que propus é um sistema de gancho, semelhante aos pre-commit , post-push , etc. do git. Isso permitiria aos desenvolvedores criar seus próprios scripts adequados para seus próprios ambientes exclusivos. Pense em ações como post-install , pre-use , pre-execute , etc. Isso permitiria aos usuários escrever um script de gancho que procura um arquivo .nvmrc e trocar a versão imediatamente .

@coreybutler Então, basicamente, duas abordagens diferentes para instalar várias versões do nó, certo?

Tipo de. Existem duas filosofias diferentes, mas elas são mais sobre _utilizar_ o Node do que instalá-lo.

Filosofia 1: Uso nativo (processo direto)
O próprio nó não suporta .nvmrc . Ele apenas instala seu próprio executável e npm. É _usado_ executando diretamente o node.exe.

Filosofia 2: Uso Aumentado (Subprocesso)
.nvmrc é uma convenção introduzida pelo projeto nvm original. Em vez de chamar node.exe diretamente, ele usa um shim. O shim é responsável por configurar um pseudoambiente antes de passar comandos para o executável do nó (ou seja, o nó é um subprocesso do shim). É aqui que a lógica .nvmrc é processada. O problema, especialmente no Windows, é que o nó é executado no contexto do shim, em vez do contexto do usuário. Isso tem uma série de efeitos / desafios, como nem sempre passar credenciais apropriadas para o subprocesso do nó (principalmente em torno de permissões elevadas), variáveis ​​de ambiente ligeiramente diferentes, nem sempre reconhecendo partições do disco rígido (como uma unidade D: \), e (em alguns casos) caminhos de arquivo de representação incorreta (ou seja, __dirname se comporta de forma inesperada) etc. Esses problemas podem ser contornados, mas eles são resolvidos quando se considera o ambiente corporativo (implantações do Active Directory, desktops restritos, unidades SAN, etc.).

O gerenciamento geral de versões requer algum nível de shimming para evitar a desinstalação / reinstalação do nó toda vez que você precisar trocar uma versão (o que levaria uma eternidade). NVM4W se alinha com a primeira abordagem usando links simbólicos para shim do _diretório_ de instalação, ao contrário da opção 2, que shim o executável. Como resultado, você sempre está executando o executável node.exe diretamente, em vez de executá-lo como um subprocesso.

Pequeno solavanco para este problema. Apenas corri para ele.

Não pode ser seriamente tão difícil. Aqui está o que fazer se uma versão não for fornecida para nvm use :

  1. Obter versão de .nvmrc
  2. Esta versão está instalada? Se não -> instale-o
  3. Esta versão está em uso atualmente? Se não -> use.
  4. Feito

Em outras palavras, sem o número da versão especificado, nvm use é uma combinação de nvm install < .nvmrc e nvm use < .nvmrc (pseudo comando - na verdade não funcionará agora).

Não há muito mais nisso.

Pequeno solavanco para este problema. Apenas corri para ele.

Não pode ser seriamente tão difícil. Aqui está o que fazer se uma versão não for fornecida para nvm use :

1. Take version from .nvmrc

2. Is this version installed? If not -> install it

3. Is this version currently in use? If not -> use it.

4. Done

Em outras palavras, sem o número da versão especificado, nvm use é uma combinação de nvm install < .nvmrc e nvm use < .nvmrc (pseudo comando - não funcionará agora).

Não há muito mais nisso.

Estou feliz por não ser o único com esse problema ...
Pensando em voltar para o Linux para desenvolver: /

@thany @jeromemeichelbeck Sinta-se à vontade para bifurcar o projeto e adicionar essa funcionalidade você mesmo. Vou postar um link aqui quando estiver pronto.

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