Nvm-windows: Necesita eliminar manualmente la carpeta en la desinstalación de nvm

Creado en 11 mar. 2017  ·  13Comentarios  ·  Fuente: coreybutler/nvm-windows

Hola,
aquí están los pasos para reproducir (incluida la descripción del error). Esto sucede en el sistema x64,

nvm install xyz (6.10.0 o similar, pero la versión no importa)
nvm desinstalar xyz
=> desinstalación exitosa, no quedan restos

nvm instalar xyz
nvm usa xyz
nvm use uvw (otra versión, solo para asegurarse de que no se usa xyz, este paso probablemente no sea necesario)
nvm desinstalar xyz
=> es necesario eliminar la carpeta xyz manualmente de la ruta nvm, que siempre contiene node.exe solo

En mi opinión, esto sucede porque antes del "uso" hay un node64.exe, que cambia de nombre en "uso" a node.exe. Este node.exe permanece a partir de este momento y obviamente bloquea la eliminación de la carpeta.

Espero que la descripción sea lo suficientemente clara.
Gracias

bug

Comentario más útil

necesita volver a abrir debido al mismo problema en macOS

Todos 13 comentarios

Si ejecuta nvm ls después de esto, ¿muestra la versión desinstalada?

Sí, de hecho, después de instalar / usar / desinstalar, nvm ls todavía muestra el
versión desinstalada.

Por cierto, si cambio el nombre de node.exe a node64.exe antes de la desinstalación, el
la versión se elimina por completo (sin tener que eliminar manualmente la
carpeta).

OK, he marcado esto como un error. ¿Qué versión de Windows está ejecutando?

¿Qué versión de Windows está ejecutando?

Windows 10 (actualización de aniversario) x64

Hola,

afaict (pero no soy un desarrollador de Go) en arch.go: SearchBytesInFile el
El archivo abierto nunca se cierra. Entonces, cuando os.RemoveAll intenta eliminar el
archivos hay una infracción de uso compartido.

Sin embargo, me sorprende un poco que no se haya informado de esto antes,
porque creo que el error debería ocurrir cada vez que una versión "usada"
(que contiene node.exe) se desinstalará.

Una vez que el ejecutable completa una operación, ya no está asociado a ningún archivo. En otras palabras, el ejecutable ejecuta una operación y luego cierra todas las conexiones de archivos al salir. Sin emabargo; No he tenido la oportunidad de probar personalmente esto en la última versión de Windows. Si Windows ahora está usando un bloqueo de archivo para esta operación, entonces puede que tenga razón ... eso podría ser persistente.

Intentaré depurar esto tan pronto como pueda, pero tengo un contrato de trabajo esta semana y tengo obligaciones de SXSWi. Entonces, puede pasar un tiempo antes de que realmente pueda sentarme con esto.

Una vez que el ejecutable completa una operación, ya no está asociado a ningún archivo. En otras palabras, el ejecutable ejecuta una operación y luego cierra todas las conexiones de archivos al salir.

En mi opinión: nvm.exe abre node.exe (y solo eso, no node64.exe o similar)
y escanea un par de bytes, pero no cierra el identificador del archivo.
Luego, nvm.exe intenta eliminar la carpeta (pero, por supuesto, no ha salido
en el medio, por lo que el identificador del archivo todavía está abierto).

Sin emabargo; No he tenido la oportunidad de probar personalmente esto en la última versión de Windows. Si Windows ahora está usando un bloqueo de archivo para esta operación, entonces puede que tenga razón ... eso podría ser persistente.

No es realmente un bloqueo de archivo. Dejo que nvm.exe muestre el error y
dice "El proceso no puede acceder al archivo porque lo está utilizando
otro proceso "(que es el mismo mensaje si está en el mismo
proceso).

Intentaré depurar esto tan pronto como pueda, pero tengo un contrato de trabajo esta semana y tengo obligaciones de SXSWi. Entonces, puede pasar un tiempo antes de que realmente pueda sentarme con esto.

Está bien, no hay problema. Si pudieras arreglarlo en la próxima versión.

¡Gracias!

Hice algunas pruebas y esto solo ocurre si nvm usa xxx la versión que se va a quitar Y está usando arch 64. Como se ha mencionado, el node64.exe se renombra a node.exe y no se quita. Sin embargo, si usa otra versión y cambia manualmente el nombre de node.exe a node64.exe (como menciona ujaroe), la desinstalación se completará correctamente.

Esto significa que hay un par de formas de corregir el problema. Recomendaría 'nvm use' restaurar la carpeta de la versión desde la que el comando de uso está moviendo de nuevo al estado original. La otra es tener el arco de verificación de desinstalación y asegurarse de que el ejecutable del nodo coincida con el arco de la versión. Hay un par de otras cosas que se pueden hacer con enlaces simbólicos, pero creo que estas son las dos mejores opciones. Mi habilidad de Go es bastante baja, pero intentaré construir uno o ambos pronto.

editar: ortografía

El mismo problema aquí. Salida CLI:

❯ nvm list

  * 8.4.0 (Currently using 64-bit executable)
    6.11.2
    6.10.0

❯ nvm uninstall 6.10.0
Uninstalling node v6.10.0...Error removing node v6.10.0
Manually remove C:\Users\darsain\AppData\Roaming\nvm\v6.10.0.

❯ nvm list

  * 8.4.0 (Currently using 64-bit executable)
    6.11.2
    6.10.0

Después de ejecutar el uninstall comando, el v6.10.0 carpeta sólo tenía node.exe archivo en él. Estoy 99% seguro de que nada lo estaba usando. Eliminar manualmente funcionó bien.

Pero, creo que la versión v6.10.0 se instaló hace un tiempo en nvm 1.1.1. Hoy actualicé a 1.1.6. Sin embargo, la instalación y eliminación del nodo 6.11.2 que hice hoy después de la actualización funcionó bien.

Puedo confirmar este. También me pasó en Win10 x64 usando el nodo v6.9.1 y nvm 1.1.3

También sucedió en Win10 x64 (versión 1709) usando el nodo v8.11.1 y nvm 1.1.6

Hola, @coreybutler , el error también ocurrió en Windows10 x64, y si uso el comando nvm use x.y.z para cambiar la versión de nodejs, el xyz no se desinstalará, mientras que la versión de abc si no puedo usar nvm use comando, se puede desinstalar

necesita volver a abrir debido al mismo problema en macOS

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

Temas relacionados

leiamac picture leiamac  ·  4Comentarios

keylowgee picture keylowgee  ·  6Comentarios

SufyanParkar picture SufyanParkar  ·  4Comentarios

fredericrous picture fredericrous  ·  3Comentarios

flpms picture flpms  ·  4Comentarios