Nvm-windows: ¿Por qué no funciona cambiar la versión del nodo a través de "nvm use"?

Creado en 11 dic. 2017  ·  43Comentarios  ·  Fuente: coreybutler/nvm-windows

Si esta es una pregunta sobre cómo usar NVM4W, use stackoverflow en su lugar.

Si se trata de un problema relacionado con el antivirus, asegúrese de buscar primero los problemas existentes.

Mi entorno

  • [x] Windows 7 o inferior (no es realmente compatible debido a EOL; consulte la wiki para obtener más detalles)

Estoy usando la versión NVM4W:

  • [x] 1.1.6

Ya tengo...

  • [x] lea el archivo README para estar al tanto de errores de npm y problemas de antivirus.
  • [x] revisó la wiki para asegurarse de que mi problema aún no se haya resuelto.
  • [] verificado Estoy usando una cuenta con privilegios administrativos.
  • [] buscó los problemas (abiertos y cerrados) para asegurarse de que no sea un duplicado.
  • [] se aseguró de que esta no sea una pregunta sobre cómo usar NVM para Windows, ya que gitter se usa para preguntas y comentarios.

Mi problema está relacionado con (marque solo los que correspondan):

  • [] settings.txt
  • [] compatibilidad con proxy (¿ha probado la versión 1.1.0+?)
  • [] Soporte de 32 o 64 bits (¿Ha probado la versión 1.1.3+?)
  • [] Carácter que se escapa (¿ha probado la versión 1.1.6+?)
  • [] Un entorno de shell estándar (terminal / powershell)
  • [] Un entorno de shell no estándar (Cmder, Hyper, Cygwin, git)

Comportamiento esperado

Intenté cambiar v8.9.1 a 6.12.0 (versión de nodo)

Comportamiento real

pero no cambió a 6.12.0 ni a otras versiones.
(instalé 8.9.1 por fin)

Pasos para reproducir el problema:

Abrí cmd a través del administrador.

C: Windowssystem32> nvm ls

  • 8.9.1 (Actualmente se usa un ejecutable de 64 bits)
    7.1.0
    6.12.0

C: Windowssystem32> nodo -v
v8.9.1

C: Windowssystem32> nvm use 6.12.0
Ahora usando el nodo v6.12.0 (64 bits)

C: Windowssystem32> nodo -v
v8.9.1

C: Windowssystem32> nvm ls

  • 8.9.1 (Actualmente se usa un ejecutable de 64 bits)
    7.1.0
    6.12.0

Comentario más útil

Solución alterna:
Renombrado "C: Program Filesnodejs" a "C: Program Filesnodejsx",
Luego, desde un cmd elevado llamado "nvm use 8.9.1" (cualquier versión que tenga debería funcionar ...) y comenzó a funcionar.
El problema parece ser que si el directorio nodejs existe, nvm no puede cambiarlo a un enlace simbólico y 'falla silenciosamente' sería bueno con una falla y un mensaje de error que indica el problema.

Todos 43 comentarios

lo mismo

+1

Lo mismo con 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 lo mismo: /
encontraste alguna solucion?

Esto ocurre con mayor frecuencia debido al uso de una cuenta de usuario sin privilegios. Su cuenta debe tener permisos de nivel de administrador, porque Windows lo requiere para los enlaces simbólicos. nvm use crea un enlace simbólico a la instalación del nodo correspondiente. Si su enlace simbólico existe dentro de C:\Program Files , necesitará permisos elevados (nvm4w intentará hacer esto automáticamente).

Soy administrador en mi pc. Aunque podría solucionar este problema cambiando manualmente el nombre de las carpetas para que el enlace simbólico nvm apunte a la versión que necesito.
Rápido y sucio, ¡pero no es necesario tener acceso de administrador!

@biologeek : aún necesita acceso de administrador para cambiar el nombre de los directorios dentro de C:\Program Files porque es un directorio protegido en Windows (lo mismo ocurre con C:\windows\system32 ). Personalmente, mantengo mi enlace simbólico NVM4W en mi directorio de usuario para que esto no sea un problema.

+1 en este tema: no puedo cambiar la versión.

Solución alterna:
Renombrado "C: Program Filesnodejs" a "C: Program Filesnodejsx",
Luego, desde un cmd elevado llamado "nvm use 8.9.1" (cualquier versión que tenga debería funcionar ...) y comenzó a funcionar.
El problema parece ser que si el directorio nodejs existe, nvm no puede cambiarlo a un enlace simbólico y 'falla silenciosamente' sería bueno con una falla y un mensaje de error que indica el problema.

Puedo confirmar lo que dijo @ituasdu . ¡Gracias!

@ituasdu resolvió mi problema, gracias

Hola, mismo problema aquí.

NVM crea un enlace simbólico a la versión del nodo instalado.

El problema es que Windows 7 requiere niveles de derechos de administrador para crear un enlace simbólico, y ya no es el caso en Windows 10.

Una solución es utilizar uniones (enlaces "duros") en Windows 7 con el parámetro "/ J". Los cruces no requieren niveles de derechos de administrador y cuentas de usuario con privilegios bajos, ya que la mía puede usarlo. Ejemplo:

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

Pregunta: ¿No sería una buena idea utilizar uniones en lugar de enlaces simbólicos? ¿O al menos especificar una opción para nvm, por ejemplo, '--junctions'?

Estoy pensando en crear una solicitud de extracción para esto, ya que está bloqueando para mi empresa. ¿Sería de ayuda?

@ nan0 hacer una unión en Windows 7 no funciona ... todavía no cambiará de versión.

C:\Program Files\nodejs contiene v6.9.4 (instalado antes de NVM4W).

C:\Users\[user]\AppData\Roaming\nvm contiene v6.9.4\ y v8.11.3\

Ejecuté el comando que proporcionaste en tu publicación:

Problema 1:
mklink /D /J node C:\Users\[user]\AppData\Roaming\nvm\v8.11.3 cuando trato de hacerlo para v6.9.4 dice "No se puede crear un archivo cuando ese archivo ya existe".

Problema 2:
Además, usar nvm use v8.11.3 luego nvm list no indica que en realidad esté usando ninguna de las versiones de nodo instalado de nvm.

Hay algo más que se pueda hacer?
¿Cómo puedo ver las uniones que se crean? ¿Dónde existen realmente?

Estoy usando:
Windows 7. no se permiten derechos de administrador para mi usuario.

no importa si funciona. Me di cuenta de que estaba haciendo el junction en la carpeta incorrecta.

cambiar el nombre de C: Program Filesnodejs a C: Program Files nodejsx
y luego hacer la unión como "nodejs" y apuntarlo a C:\Users\[user]\AppData\Roaming\nvm\v8.11.3 ¡funcionó!

Entonces, para resumir, la solución es esta:

sin ningún nodo independiente instalado.

En la carpeta C:\Program Files\ use cmd para ejecutar mklink /D /J nodejs C:\Users\[user]\AppData\Roaming\nvm\v8.11.3

Para aquellos interesados ​​en contribuir, ¡gracias!

Sin embargo; Quiero señalar que las uniones se evitaron explícitamente porque no funcionarán en diferentes discos duros. Este fue un punto delicado en particular en las redes empresariales con unidades compartidas / unidades asignadas.

@ituasdu Resolvió mi problema,
Gracias por la solucion

Mi computadora es Windows 7 y tengo privilegios de administrador. En la misma situación, NVM no puede cambiar la versión. Mi enfoque es configurar NVM_SYMLINK D: Project NVM v8.11.4 en la variable de entorno. Cambiar versiones de nodo solo requiere cambiar el número de versión correspondiente a la ruta de NVM de la variable de entorno, como: NVM_SYMLINK D: Proyecto NVM v6.9.0. De esta manera, aunque se solucionó el problema, cada vez que cambiaba la versión, era problemático, y no encontré una mejor solución por el momento.

La solución de "Sagan" del desbordamiento de pila funciona para mí:
https://stackoverflow.com/questions/28313372/nvm-for-windows-not-working

Para mí,

nvm list 

image

Luego elimino la carpeta
image

Después:

nvm list 

image

Luego, muevo la v8.9.4 hacia atrás.

Esto me está sucediendo en Windows 10 10.0.17134.165
Probé la solución mencionada por

Si lo encontró después de probar cmd como:
nvm use 6.10.0
y la versión de nodejs no se ha cambiado, puede iniciar cmd.exe o powershell por el administrador.
image

Tuve el mismo problema al cambiar entre el nodo 6.6.0 y 7.9.0 (Windows 10) pero la solución de ituasdu no funcionaba. La reinstalación de nvm tampoco funcionó.

Ejecuté nvm install latest (instalado 11.3.0) y esto de alguna manera me lo arregló.

Solución alterna:
Renombrado "C: Program Filesnodejs" a "C: Program Filesnodejsx",
Luego, desde un cmd elevado llamado "nvm use 8.9.1" (cualquier versión que tenga debería funcionar ...) y comenzó a funcionar.
El problema parece ser que si el directorio nodejs existe, nvm no puede cambiarlo a un enlace simbólico y 'falla silenciosamente' sería bueno con una falla y un mensaje de error que indica el problema.

Esto funcionó para mí.
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 trabajó para mí también .. gracias .. :)

@ituasdu Gracias, funcionó a las

Esto también funciona para mí, gracias.

No sé si esto podría aclarar el problema, pero en mi caso creo que esto sucedió después de instalar una nueva versión de nodo sin nvm (manualmente). Parece que esta acción vuelve loco a nvm.

@coreybutler ¿ alguna idea sobre la instalación del enlace simbólico en una carpeta que no requiere privilegios de administrador? Sé que esto podría ser un poco mal en el desarrollo de Windows, pero definitivamente evitará todos estos problemas, especialmente en un entorno empresarial altamente bloqueado donde obtener privilegios de administrador es un gran dolor.

Otro dolor es lo que estoy sufriendo actualmente (no debido a nvmw) donde, aunque de hecho tengo privilegios de administrador en algunos casos, cada vez que quiero cambiar entre versiones de nodo, tengo que abrir una ventana de cmd completamente diferente, ejecute cmd como administrador y finalmente ejecute nvm use 10.15.1 (por ejemplo). luego navegue de nuevo a mi dev, ventana cmd. argh. nuevamente, el dolor debido al trabajo env no debido a nvmw. (nvmw es increíble por cierto).

solo un pensamiento. ;-)

Ejecute nvm use <node.js version you want to use> (por ejemplo, nvm use 10.15.3 ) en Powershell ISE ya que el administrador resolvió el problema en mi Windows 10.

Tengo que ejecutar nvm use any.version varias veces en Powershell como administrador para que funcione. Cambia de versión aleatoriamente en el primer, segundo o tercer intento (nvm versión 1.1.7).

Traté de solucionarlo instalando Link Shell Extension y siguiendo los siguientes pasos:

  1. haga clic derecho en C:\Program Files\nodejs
  2. seleccione _Pick Link Source_
  3. haga clic derecho en C:\Program Files
  4. seleccione _Drop as ..._> _Symbolic Link_
  5. renombrar nodejs - SymbolicLink a nodejsx

Pero, lamentablemente, el problema sigue ocurriendo.

Puedo confirmar que la solución @ituasdu también funcionó para mí.

@ituasdu funciona para mí, gracias.

@ monico-moreno - la próxima vez envíeme un ping por correo electrónico cuando no responda durante meses a la vez :) Para responder a su pregunta, puede instalar en cualquier carpeta que desee utilizando el instalador. Sin embargo; todos los enlaces simbólicos en Windows requieren privilegios de administrador, excepto para algunos modos de desarrollador en las ediciones más recientes de Windows 10. La conclusión es que los privilegios de administrador entran en juego en algún momento.

Además, tal vez puedas probar la versión beta del sistema de menús cuando termine (cambiar de versión desde la barra de tareas de Windows). ¿Sería un mejor flujo de trabajo?

  • Abra el panel de control y desinstale nvm y node.
  • instale nvm-setup.zip desde https://github.com/coreybutler/nvm-windows/releases
  • abre el símbolo del sistema. Ingrese nvm install @version. luego nvm use la versión.
  • instalar hilo. luego, en el símbolo del sistema, ejecute yarn install o yarn.
  • compruebe la versión del nodo mediante el nodo -v.

Acabo de tener un problema similar, pero una razón 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

IIRC Tenía una versión anterior de nvm instalada en D: soft y estaba cambiando el enlace D: softnodejs. En algún momento, el nvm antiguo dejó de funcionar, porque el repositorio de npm cambió de ubicación (si funciona, no lo toque, por favor). Tuve que instalar un nuevo nvm, y supongo que el nuevo nvm se negó a cambiar el enlace anterior, en cambio, estaba actualizando el enlace C: Program Filesnodejs. Así que eliminé D: softnodejs y se solucionó.

Gracias a @delepster que sugirió desinstalar el nodo antiguo, eso me ayudó a detectar el problema

lo instalamos en tres computadoras hoy, dos de ellas con el sistema operativo Windows 10 instalado y una con Windows Server. Ambas máquinas con sistema operativo Windows 10 perdieron la búsqueda en las funciones de inicio, pero no la que tenía el sistema operativo Windows Server. por lo tanto, ya no puede escribir el nombre del programa que desea y ver.

¿Alguien más tiene el mismo problema?

@putko, este es un problema de Windows que apareció hoy, confirmado y solucionado por MS. ver este tweet https://twitter.com/tomwarren/status/1225110095010418689

Solución alterna:
Renombrado "C: Program Filesnodejs" a "C: Program Filesnodejsx",
Luego, desde un cmd elevado llamado "nvm use 8.9.1" (cualquier versión que tenga debería funcionar ...) y comenzó a funcionar.
El problema parece ser que si el directorio nodejs existe, nvm no puede cambiarlo a un enlace simbólico y 'falla silenciosamente' sería bueno con una falla y un mensaje de error que indica el problema.

Esto funcionó para mí.
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

Esto funcionó para mí también.

Tuve un problema similar con 1.1.7 , finalmente descubrí que el archivo settings.txt se ignora. nvm use no haría absolutamente nada, hasta que establezca manualmente NVM_SYMLINK . Además, sin SYMLINK establecido, nvm intentará eliminar . , lo cual es interesante, por decir lo menos.

El parámetro path en settings.txt , que contiene lo que debería usarse de forma predeterminada como SymLink, nunca se lee ni se usa para inicializar:
https://github.com/coreybutler/nvm-windows/blob/88353cfcea140e02e2b13584fd89454adc9f52b3/src/nvm.go#L727 -L751

La última versión de Windows 10 Pro, en la que realicé una instalación nueva, encontré el mismo problema.

Mis pasos habituales para configurar mi máquina son:

  1. Instalar dependencias primarias (NodeJS y Docker)
  2. Instale IDE (Visual Studio 2019 en este punto con los departamentos de desarrollo de .NET, NodeJS y Python)
  3. Instale dependencias adicionales como Windows Terminal, fuentes PL, nvm, tmux, WSL2, etc.

@ituasdu tiene razón en su afirmación, cuando

Sé que en realidad hay una línea que dice que deberíamos desinstalar el nodo existente que me perdí la primera vez en el README.md, pero después de haber usado nvm-windows antes de no verificarlo nuevamente, lo instalé a través de chocolatey y me olvidé de eso. . (¿Es posible simplemente realizar la desinstalación de npm como parte de la instalación de chocolatey o simplemente detectar si hay uno y pedirle al usuario que lo desinstale primero antes de permitirle instalar nvm?)

(¿Es posible simplemente realizar la desinstalación de npm como parte de la instalación de chocolatey o simplemente detectar si hay uno y pedirle al usuario que lo desinstale primero antes de permitirle instalar nvm?)

Creo que es posible: esta solicitud debe realizarse al encargado del paquete Chocolatey nvm .

Ocurre cuando tiene Node instalado por separado en su máquina (desde el sitio web o el administrador de paquetes). Desinstalarlos e instalarlos a través de nvm debería resolver el problema.

Tengo el mismo problema y el uso de PS en modo de administrador no resuelve el problema. (Windows 10.0.18363)

image

¿Fue útil esta página
0 / 5 - 0 calificaciones

Temas relacionados

David263 picture David263  ·  3Comentarios

snerte picture snerte  ·  5Comentarios

Deilan picture Deilan  ·  4Comentarios

AllainPL picture AllainPL  ·  7Comentarios

eliavmaman picture eliavmaman  ·  6Comentarios