Nvm-windows: Pourquoi ne fonctionne pas pour changer de version de nœud via "nvm use"

Créé le 11 déc. 2017  ·  43Commentaires  ·  Source: coreybutler/nvm-windows

S'il s'agit d'une question sur l'utilisation de NVM4W, veuillez utiliser stackoverflow à la place.

S'il s'agit d'un problème d'antivirus, assurez-vous de rechercher d'abord les problèmes existants.

Mon environnement

  • [x] Windows 7 ou inférieur (pas vraiment pris en charge en raison de la fin de vie - voir le wiki pour plus de détails)

J'utilise la version NVM4W :

  • [x] 1.1.6

J'ai déjà...

  • [x] lisez le README pour être au courant des problèmes de npm et d'antivirus.
  • [x] a passé en revue le wiki pour s'assurer que mon problème n'a pas déjà été résolu.
  • [ ] vérifié J'utilise un compte avec des privilèges administratifs.
  • [ ] a recherché les numéros (ouverts et fermés) pour s'assurer qu'il ne s'agit pas d'un doublon.
  • [ ] s'est assuré qu'il ne s'agit pas d'une question sur l'utilisation de NVM pour Windows, car gitter est utilisé pour les questions et les commentaires.

Mon problème est lié à (cochez uniquement ceux qui s'appliquent) :

  • [ ] settings.txt
  • [ ] prise en charge du proxy (Avez-vous essayé la version 1.1.0+ ?)
  • [ ] Prise en charge 32 ou 64 bits (Avez-vous essayé la version 1.1.3+ ?)
  • [ ] Caractère s'échappant (Avez-vous essayé la version 1.1.6+ ?)
  • [ ] Un environnement shell standard (terminal/powershell)
  • [ ] Un environnement shell non standard (Cmder, Hyper, Cygwin, git)

Comportement attendu

j'ai essayé de passer de la v8.9.1 à la 6.12.0 (version de nœud)

Comportement réel

mais, il n'est pas passé à la version 6.12.0 ou à une autre version.
(j'ai enfin installé 8.9.1)

Étapes pour reproduire le problème :

J'ai ouvert cmd via l'administrateur.

C:Windowssystem32> nvm ls

  • 8.9.1 (Utilisant actuellement un exécutable 64 bits)
    7.1.0
    6.12.0

C:Windowssystem32> nœud -v
v8.9.1

C:Windowssystem32> nvm utilise 6.12.0
Maintenant en utilisant le nœud v6.12.0 (64 bits)

C:Windowssystem32> nœud -v
v8.9.1

C:Windowssystem32> nvm ls

  • 8.9.1 (Utilisant actuellement un exécutable 64 bits)
    7.1.0
    6.12.0

Commentaire le plus utile

Solution de contournement:
Renommé "C:Program Filesnodejs" en "C:Program Filesnodejsx",
Ensuite, à partir d'un cmd élevé appelé "nvm use 8.9.1" (toute version que vous avez devrait fonctionner ..) et cela a commencé à fonctionner.
Le problème semble être que si le répertoire nodejs existe, nvm ne peut pas le changer en lien symbolique et "échouer silencieusement" serait bien avec un échec et un message d'erreur indiquant le problème.

Tous les 43 commentaires

le même

+1

Idem avec 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 même chose :/
as-tu trouvé une solution ?

Cela se produit le plus souvent en raison de l'utilisation d'un compte d'utilisateur non privilégié. Votre compte doit disposer d'autorisations de niveau administrateur, car Windows l'exige pour les liens symboliques. nvm use crée un lien symbolique vers l'installation Node appropriée. Si votre lien symbolique existe dans C:\Program Files , vous aurez besoin d'autorisations élevées (nvm4w tentera de le faire pour vous automatiquement).

Je suis administrateur sur mon pc. Bien que je puisse surmonter ce problème en renommant manuellement les dossiers afin que le lien symbolique nvm pointe vers la version dont j'ai besoin.
Rapide et sale mais pas besoin d'avoir un accès administrateur !

@biologeek - vous avez toujours besoin d'un accès administrateur pour renommer les répertoires dans C:\Program Files car il s'agit d'un répertoire protégé sous Windows (il en va de même pour C:\windows\system32 ). Personnellement, je garde mon lien symbolique NVM4W dans mon répertoire utilisateur, donc ce n'est pas un problème.

+1 sur ce problème : je ne peux pas changer la version.

Solution de contournement:
Renommé "C:Program Filesnodejs" en "C:Program Filesnodejsx",
Ensuite, à partir d'un cmd élevé appelé "nvm use 8.9.1" (toute version que vous avez devrait fonctionner ..) et cela a commencé à fonctionner.
Le problème semble être que si le répertoire nodejs existe, nvm ne peut pas le changer en lien symbolique et "échouer silencieusement" serait bien avec un échec et un message d'erreur indiquant le problème.

Peut confirmer ce que @ituasdu a dit. Merci!

@ituasdu a résolu mon problème, merci

Bonjour, même problème ici.

NVM crée un lien symbolique vers la version du nœud installé.

Le problème est que Windows 7 nécessite des niveaux de droits d'administrateur pour créer un lien symbolique, et ce n'est plus le cas dans Windows 10.

Une solution de contournement consiste à utiliser des jonctions (liens 'hard') sur Windows 7 avec le paramètre '/J'. Les jonctions ne nécessitent pas de niveaux de droits d'administrateur et un compte d'utilisateur à faible privilège car le mien peut l'utiliser. Exemple:

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

Question : Ne serait-ce pas une bonne idée d'utiliser des jonctions au lieu de liens symboliques ? Ou au moins spécifier une option à nvm, par exemple '--junctions' ?

Je pense créer une pull request pour cela car cela bloque pour mon entreprise. Serait-ce utile?

@nan0 faire une jonction sur Windows 7 ne fonctionne pas... il ne changera toujours pas de version.

C:\Program Files\nodejs contient la version 6.9.4 (installée avant l'installation de NVM4W).

C:\Users\[user]\AppData\Roaming\nvm contient v6.9.4\ et v8.11.3\

J'ai exécuté la commande que vous avez fournie dans votre message:

Problème 1 :
mklink /D /J node C:\Users\[user]\AppData\Roaming\nvm\v8.11.3 lorsque j'essaie de le faire pour la version 6.9.4, il est dit "Impossible de créer un fichier lorsque ce fichier existe déjà".

Question 2 :
De plus, en utilisant nvm use v8.11.3 puis nvm list cela n'indique pas qu'il utilise réellement l'une ou l'autre des versions de nœud installées par nvm.

Y a-t-il autre chose qui puisse être fait?
Comment puis-je voir les jonctions qui sont créées ? Où existent-ils réellement ?

J'utilise:
Windows 7. aucun droit d'administrateur autorisé pour mon utilisateur.

peu importe que cela fonctionne. J'ai réalisé que je faisais le junction dans le mauvais dossier.

renommer C:Program Filesnodejs en C:Program Files nodejsx
puis faire la jonction en tant que "nodejs" et la pointer sur C:\Users\[user]\AppData\Roaming\nvm\v8.11.3 fonctionné !

Donc pour résumer la solution est la suivante :

sans nœud autonome installé.

Dans le dossier C:\Program Files\ , utilisez cmd pour exécuter mklink /D /J nodejs C:\Users\[user]\AppData\Roaming\nvm\v8.11.3

Pour ceux qui souhaitent contribuer, merci !

Pourtant; Je tiens à souligner que les jonctions ont été explicitement évitées car elles ne fonctionneront pas sur différents disques durs. C'était un point sensible dans les réseaux d'entreprise avec des lecteurs partagés/des lecteurs mappés.

@ituasdu Cela a résolu mon problème,
Merci pour la solution.

Mon ordinateur est Windows 7 et j'ai des privilèges d'administrateur. Dans la même situation, NVM ne peut pas changer de version. Mon approche consiste à configurer NVM_SYMLINK D:Project NVM v8.11.4 dans la variable d'environnement. Changer de version de nœud nécessite uniquement de changer le numéro de version correspondant au chemin NVM de la variable d'environnement, par exemple : NVM_SYMLINK D:Project NVM v6.9.0.De cette façon, bien que le problème soit résolu, à chaque fois que je changeais de version, c'était gênant, et je ne trouvais pas de meilleure solution pour le moment.

La solution de "Sagan" du débordement de la pile fonctionne pour moi :
https://stackoverflow.com/questions/28313372/nvm-for-windows-not-working

Pour moi,

nvm list 

image

Puis - je supprimer v8.9.4 dossier de NVM.
image

Après ça:

nvm list 

image

Ensuite, je recule la v8.9.4 .

Cela se produit pour moi sur Windows 10 10.0.17134.165
J'ai essayé la solution mentionnée par @ituasdu et cela a fonctionné. Merci!!!

Si vous avez trouvé cela après avoir essayé cmd comme :
nvm use 6.10.0
et la version nodejs n'a pas été modifiée, vous pouvez démarrer cmd.exe ou powershell par l'administrateur.
image

J'ai eu le même problème lors du basculement entre les nœuds 6.6.0 et 7.9.0 (Windows 10) mais la solution d'itasdu ne fonctionnait pas. La réinstallation de nvm n'a pas fonctionné non plus.

J'ai exécuté la dernière installation de nvm (installé 11.3.0) et cela a en quelque sorte résolu le problème pour moi.

Solution de contournement:
Renommé "C:Program Filesnodejs" en "C:Program Filesnodejsx",
Ensuite, à partir d'un cmd élevé appelé "nvm use 8.9.1" (toute version que vous avez devrait fonctionner ..) et cela a commencé à fonctionner.
Le problème semble être que si le répertoire nodejs existe, nvm ne peut pas le changer en lien symbolique et "échouer silencieusement" serait bien avec un échec et un message d'erreur indiquant le problème.

Cela a fonctionné pour moi.
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 a travaillé pour moi aussi.. merci.. :)

@ituasdu Merci, a fonctionné comme un charme. Je pense que cela se produit lorsque NodeJS est déjà installé directement sans nvm, puis essaie d'utiliser le nœud via nvm.

Cela fonctionne aussi pour moi, merci.

Je ne sais pas si cela pourrait éclaircir le problème, mais dans mon cas, je pense que cela s'est produit après l'installation d'une nouvelle version de nœud sans nvm (manuellement). On dirait que cette action rend fou nvm.

@coreybutler des idées sur l'installation du lien symbolique sur un dossier qui ne nécessite pas de privilèges d'administrateur ? Je sais que cela peut être un peu mauvais dans le développement de Windows, mais cela évitera certainement tous ces problèmes, en particulier dans un environnement d'entreprise hautement verrouillé où l'obtention de privilèges d'administrateur est une douleur énorme.

Une autre douleur est ce que je souffre actuellement (pas à cause de nvmw) où, bien que j'aie effectivement des privilèges d'administrateur dans certains cas, chaque fois que je veux basculer entre les versions de nœud, je dois ouvrir une toute autre fenêtre cmd, exécutez cmd en tant qu'administrateur et exécutez enfin nvm use 10.15.1 (par exemple). puis revenez à mon dev, fenêtre cmd. arg. encore une fois, la douleur due au travail env pas à cause de nvmw. (nvmw est génial d'ailleurs).

juste une pensée. ;-)

Exécutez nvm use <node.js version you want to use> (par exemple nvm use 10.15.3 ) sous Powershell ISE en tant qu'administrateur a résolu le problème dans mon Windows 10.

Je dois exécuter nvm use any.version plusieurs fois sous Powershell en tant qu'administrateur pour que cela fonctionne. Il change de version aléatoirement à la première, deuxième ou troisième tentative (nvm version 1.1.7).

J'ai essayé de le réparer en installant Link Shell Extension et en procédant comme suit :

  1. clic droit sur C:\Program Files\nodejs
  2. sélectionnez _Choisir la source du lien_
  3. clic droit sur C:\Program Files
  4. sélectionnez _Drop as..._ > _Lien symbolique_
  5. renommer nodejs - SymbolicLink en nodejsx

Mais malheureusement, le problème persiste.

Peut confirmer que la solution

@ituasdu travaille pour moi, merci.

@monico-moreno - la prochaine fois, envoyez-moi un ping par e-mail lorsque je ne réponds pas pendant des mois :) Pour répondre à votre question, vous pouvez installer dans n'importe quel dossier à l'aide du programme d'installation. Pourtant; tous les liens symboliques sur Windows nécessitent des privilèges d'administrateur, à l'exception de certains modes de développement sur les nouvelles éditions de Windows 10. En fin de compte, les privilèges d'administrateur entrent en jeu à un moment donné.

En outre, vous pourrez peut-être tester le système de menus en version bêta lorsque je le terminerai (changez de version à partir de la barre des tâches Windows). Serait-ce un meilleur flux de travail ?

  • Ouvrez le panneau de configuration et désinstallez nvm et node.
  • installez nvm-setup.zip à partir de https://github.com/coreybutler/nvm-windows/releases
  • ouvrir l'invite de commande. Entrez nvm install @version. puis nvm utilise la version.
  • installer du fil. puis, dans l'invite de commande, exécutez le fil d'installation ou le fil.
  • vérifier la version du nœud par nœud -v.

Je viens d'avoir un problème similaire, mais une raison différente.

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

IIRC J'avais installé la version précédente de nvm sur D:soft et le lien D:softnodejs était en train de changer. À un moment donné, l'ancien nvm a cessé de fonctionner, car le référentiel npm a changé d'emplacement (si cela fonctionne, ne touchez pas, s'il vous plaît). J'ai dû installer un nouveau nvm, et je suppose que le nouveau nvm a refusé de modifier l'ancien lien, au lieu de cela, il mettait à jour le lien C:Program Filesnodejs. J'ai donc supprimé D:softnodejs et c'était corrigé.

Merci à @delepster qui a suggéré de désinstaller l'ancien nœud, cela m'a aidé à repérer le problème

nous avons installé sur trois ordinateurs aujourd'hui, dont deux avec le système d'exploitation Windows 10 et un avec le serveur Windows. Les deux machines avec le système d'exploitation Windows 10 ont perdu leurs fonctions de recherche au démarrage, mais pas celle avec le système d'exploitation Windows Server. donc, vous ne pouvez pas taper le nom du programme que vous voulez et voir plus.

Quelqu'un d'autre a le même problème ?

@putko il s'agit d'un problème Windows apparu aujourd'hui, confirmé et corrigé par MS. voir ce tweet https://twitter.com/tomwarren/status/1225110095010418689

Solution de contournement:
Renommé "C:Program Filesnodejs" en "C:Program Filesnodejsx",
Ensuite, à partir d'un cmd élevé appelé "nvm use 8.9.1" (toute version que vous avez devrait fonctionner ..) et cela a commencé à fonctionner.
Le problème semble être que si le répertoire nodejs existe, nvm ne peut pas le changer en lien symbolique et "échouer silencieusement" serait bien avec un échec et un message d'erreur indiquant le problème.

Cela a fonctionné pour moi.
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

Cela a fonctionné pour moi aussi.

J'ai eu un problème similaire avec 1.1.7 , j'ai finalement compris que le fichier settings.txt était ignoré. nvm use ne ferait absolument rien, jusqu'à ce que je définisse manuellement NVM_SYMLINK . De plus, sans SYMLINK défini, nvm essaiera de supprimer . , ce qui est pour le moins intéressant.

Le paramètre path dans le settings.txt , qui contient ce qui devrait être utilisé par défaut comme SymLink, n'est jamais lu ou utilisé pour initialiser :
https://github.com/coreybutler/nvm-windows/blob/88353cfcea140e02e2b13584fd89454adc9f52b3/src/nvm.go#L727 -L751

Dernière version de Windows 10 Pro où j'ai effectué une nouvelle installation, j'ai rencontré le même problème.

Mes étapes habituelles pour configurer ma machine sont les suivantes :

  1. Installer les dépendances principales (NodeJS et Docker)
  2. Installez IDE (Visual Studio 2019 à ce stade avec les développeurs de développement .NET, NodeJS et Python)
  3. Installez des dépendances supplémentaires comme Windows Terminal, les polices PL, nvm, tmux, WSL2, etc...

@ituasdu a raison dans son affirmation, lorsque j'ai renommé mon fichier nodejs, cela m'a permis d'utiliser nvm et de le définir. Sinon, cela réussirait à tort et me dirait la version définie et ainsi de suite, mais cela n'a pas défini la version et je suis bloqué avec le LTS qui a été installé initialement.

Je sais qu'il y a en fait une ligne disant que nous devrions désinstaller le nœud existant que j'ai manqué la première fois sur le README.md mais après avoir utilisé nvm-windows avant de ne pas le vérifier à nouveau, je l'ai juste installé via chocolatey et j'ai oublié ça . (est-il possible de faire simplement la désinstallation de npm dans le cadre de l'installation de chocolatey ou de simplement détecter s'il y en a une et d'inviter l'utilisateur à le désinstaller d'abord avant de lui permettre d'installer nvm ?)

(est-il possible de faire simplement la désinstallation de npm dans le cadre de l'installation de chocolatey ou de simplement détecter s'il y en a une et d'inviter l'utilisateur à le désinstaller d'abord avant de lui permettre d'installer nvm ?)

Je pense que c'est possible : cette demande doit être faite au responsable du paquet Chocolatey nvm .

Cela se produit lorsque Node est installé séparément sur votre machine (à partir du site Web ou du gestionnaire de packages). Les désinstaller et les installer via nvm devrait résoudre le problème.

J'ai le même problème et l'utilisation de PS en mode administrateur ne résout pas le problème. (Windows 10.0.18363)

image

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