Nvm-windows: La instalación de nvm falla con "El nombre de archivo o la extensión es demasiado largo"

Creado en 21 jul. 2017  ·  25Comentarios  ·  Fuente: coreybutler/nvm-windows

Mi entorno

Windows 8

Estoy usando la versión NVM4W:

1.1.5

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

  • [] settings.txt
  • [] soporte de 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+?)
  • [x] Un entorno de shell estándar (terminal / powershell)
  • [] Un entorno de shell no estándar (Cmder, Hyper, Cygwin, git)

Comportamiento esperado

Instalar la versión del nodo 8.2.1

Comportamiento real

Falla con el error The filename or extension is too long

Pasos para reproducir el problema:

λ nvm install 8.2.1
Downloading node.js version 8.2.1 (64-bit)...
Complete
Downloading npm version 5.3.0... Complete
Installing npm v5.3.0...2017/07/21 09:02:31 mkdir C:\Users\suhas.karanth.RB\AppData\Roaming\nvm\temp\nvm-npm\npm-5.3.0\node_modules\libnpx\node_modules\yargs\node_modules\read-pkg-up\node_modules\read-pkg\node_modules\load-json-file\node_modules\parse-json\node_modules\error-ex\node_modules\is-arrayish: The filename or extension is too long.

Si bien esto _es_ un problema, dudo que haya una forma directa de solucionarlo. Sin embargo, creo este problema para compartir cómo lo resolví y cómo tal vez podría evitarse.

Instalé la última versión preliminar de nvm ( v1.1.6 ) pero esta vez la instalé en C:\nvm\ para conservar la longitud de la ruta. Pude instalar con éxito el nodo v8.2.1 después de esto. ¿Crees que tiene sentido instalar nvm en esta ruta de forma predeterminada?

upstream-bug

Comentario más útil

Si instala la última versión (1.1.6) y en lugar de C:/Users/<username>/AppData/Roaming/nvm selecciona C:/nvm como carpeta de instalación, debería funcionar. No tuve problemas para instalar 8.4.0 :)

Para mí, usar nvm root para cambiar la ruta de nvm no funcionó, recibí mensajes de error extraños. No copió nvm <commands> y luego incluso node dejó de funcionar.

La clonación manual de npm como sugirió @michaelkdh tampoco funcionó, y parece hackear en comparación con una instalación limpia

Todos 25 comentarios

Algo está mal en esta instalación ... ¿Por casualidad tenía dos versiones de NVM instaladas al mismo tiempo?

Puede que sea demasiado tarde en este punto, pero ¿qué produce echo %NVM_SYMLINK% ?

No. No tenía instaladas 2 versiones de NVM en el momento en que ocurrió el error.

Puede que sea demasiado tarde en este punto, pero ¿qué produce echo %NVM_SYMLINK% ?

De hecho, no es demasiado tarde. Tenía una terminal abierta que todavía tenía el entorno anterior.

λ where nvm
C:\Users\suhas.karanth.RB\AppData\Roaming\nvm\nvm.exe

λ echo %NVM_SYMLINK%
C:\Program Files\nodejs

Además, había instalado y estaba usando varias versiones de nodo a través de NVM antes:

λ nvm list

  * 8.1.2 (Currently using 64-bit executable)
    8.1.1
    8.1.0
    8.0.0
    6.10.3
    6.10.0
    5.12.0
    4.8.0
    4.2.6

Tengo el mismo problema.
Windows 10
Shell de Cmder
NVM 1.1.5

Esto ocurre con el nodo 8.2.0 y 8.2.1
8.1.4 y 8.1.3 funcionan bien.

$ nvm install 8.2.0
Downloading node.js version 8.2.0 (64-bit)...
Complete
Downloading npm version 5.3.0... Complete
Installing npm v5.3.0...2017/07/22 00:15:41 mkdir C:\Users\Christopher\AppData\Roaming\nvm\temp\nvm-npm\npm-5.3.0\node_modules\libnpx\node_modules\yargs\node_modules\read-pkg-up\node_modules\read-pkg\node_modules\load-json-file\node_modules\parse-json\node_modules\error-ex\node_modules\is-arrayish: The filename or extension is too long.

Me pregunto si deberíamos abordar esto con npm upstream.
@clowenhg Si instala nvm directamente en C:\nvm , el problema se resolverá pero ya no se reconocerán sus instalaciones de nodos existentes. Moví las carpetas de múltiples nodos a C:\nvm y pude verlas en la lista, pero nunca tuve la oportunidad de probar ninguna de ellas. Gracias a la actualización de Windows y al ciclo de arranque.

Eso probablemente funcionaría, pero parece una solución temporal hasta que la próxima cosa quiera ir un directorio más profundo. Así que sí, plantear esto como un problema para la NPM probablemente sería una buena decisión.

Dado que la 8 aún no está en su versión final de LTS, solo estoy volviendo a la 8.1.4 por ahora.

Parece haber una serie de problemas con las nuevas versiones de npm, específicamente aquellas que incluyen soporte npx. Agregué soporte para npx en la rama maestra y lo lanzaré cuando 1.1.6 se vuelva oficial (actualmente en prueba). Sin embargo; incluso en esa rama, npx aún falla (también falla a través del instalador independiente de Windows Node sin NVM4W).

Creo que este es un problema de npm, no un problema de NVM4W. Cerraré el problema y lo marcaré como un problema anterior.

@coreybutler Una pequeña aclaración si no le importa. ¿Por qué tuvo que hacer cambios para la compatibilidad con npx? Incluso con el nodo v8.1 , npx estaba disponible y se podía usar, aunque tenía errores en Windows. Pero nvm no debería tener que hacer nada por esto.

El nodo 8.1 _no_ se envió con soporte npx. Si lo tiene en 8.1, debe haber ejecutado npm install -g npm algún lugar a lo largo de la línea para actualizar npm. El comando npx se agregó en npm v5.3.0, y la primera versión de Node que se distribuyó con npm 5.3.0 fue 8.2.1. Para obtener detalles específicos, consulte el número 288.

Sí ... Probablemente tengas razón. Recuerdo haber actualizado npm.

Tuve el mismo problema, la solución que tengo es:

  1. instalar 8.2.1, que le fallará, está bien.
  2. instale v6.11.2 y copie 2 archivos (npm y npm.cmd) desde /c:/[username]/AppData/Roaming/nvm/v6.11.2 a la carpeta v8.2.1
  3. en la carpeta v8.2.1, haga git clone https://github.com/npm/npm.git

entonces deberías estar bien

Gracias @michaelkdh Me funciona. 👍
Algo ligeramente diferente fue que cuando cloné el 'npm.git' se creó la carpeta 'npm'. Y tuve que mover la carpeta 'npm' a 'node_modules'.

@ gblue1223 lo mismo, solo necesito npm en su lugar. salud,

@coreybutler De acuerdo con el problema que vinculó, puede anular las rutas para instalar.

Si instala la última versión (1.1.6) y en lugar de C:/Users/<username>/AppData/Roaming/nvm selecciona C:/nvm como carpeta de instalación, debería funcionar. No tuve problemas para instalar 8.4.0 :)

Para mí, usar nvm root para cambiar la ruta de nvm no funcionó, recibí mensajes de error extraños. No copió nvm <commands> y luego incluso node dejó de funcionar.

La clonación manual de npm como sugirió @michaelkdh tampoco funcionó, y parece hackear en comparación con una instalación limpia

@ peterbakonyi05 Todavía es un truco redefinir la carpeta nvm solo para instalarla también.

@Sieabah Estoy de acuerdo, todo el problema es extraño. Sin embargo, creo que sigue siendo mejor que las otras 2 soluciones propuestas (en realidad, ninguna de ellas funcionó para mí)

Para aquellos que todavía se encuentran con esto, ¿alguien podría proporcionar pasos para recrear este error? ¿O quizás un screencast? Todavía tengo que ver esto en acción.

Además, he notado que muchas personas están copiando / pegando desde sus terminales ... y la sintaxis como /c/whatever , lambdas, etc. sigue apareciendo ... todo lo cual indica que las personas están usando cosas como Cygwin , git shells, cmder, etc. Tenga en cuenta que estos shells _no siempre se adhieren a los estándares de la plataforma de Windows_ y _ sí_ afectan la forma en que se leen las rutas. Hay varios otros problemas que citan esto, así que intente todo en un terminal estándar antes de publicar para asegurarse de que sea un problema de NVM4W y no un problema de terminal-shell.

@coreybutler Aquí tienes, con cmd.exe

C: \ Usuarios \ Christopher> nvm install 8.4.0
Descargando node.js versión 8.4.0 (64 bits) ...
Completar
Creando C: \ Users \ Christopher \ AppDataRoamingnvm \ temp

Descargando npm versión 5.3.0 ... Completo
Instalando npm v5.3.0 ... 2017/09/05 16:50:14 mkdir C: \ Users \ Christopher \ AppDataRoamingnvm \ tempnvm-npmnpm-5.3.0node_modules \ libnpxnode_modules \ yargsnode_modules \ read-pkg-upnode_modules \ read-pkgnode_modules load-json-filenode_modules \ parse-jsonnode_modules \ error-exnode_modules \ is-arrayish: el nombre del archivo o la extensión es demasiado largo.

C: \ Users \ Christopher> donde nvm
C: \ Users \ Christopher \ AppDataRoamingnvmnvm.exe

C: \ Usuarios \ Christopher> nvm install 8.4.0
Descargando node.js versión 8.4.0 (64 bits) ...
Completar
Creando C: \ Users \ Christopher \ AppDataRoamingnvm \ temp

Descargando npm versión 5.3.0 ... Completo
Instalando npm v5.3.0 ... 2017/09/05 16:50:14 mkdir C: \ Users \ Christopher \ AppDataRoamingnvm \ tempnvm-npmnpm-5.3.0node_modules \ libnpxnode_modules \ yargsnode_modules \ read-pkg-upnode_modules \ read-pkgnode_modules load-json-filenode_modules \ parse-jsonnode_modules \ error-exnode_modules \ is-arrayish: el nombre del archivo o la extensión es demasiado largo.

C: \ Users \ Christopher> donde nodo
C: \ Archivos de programanodejsnode.exe

C: \ Users \ Christopher> donde npm
C: \ Archivos de programanodejsnpm
C: \ Archivos de programanodejsnpm.cmd

También estoy en la versión 1.1.5 de nvm si eso hace una diferencia (¿tal vez estás en la 1.1.6?)

Puedo confirmar que la actualización a 1.1.6 soluciona este problema. Tiene sentido ya que parece que parte de la administración de rutas de archivo ahora usa bibliotecas nativas de Go.

Eso también significaría que el error de ruta de archivo estaba dentro de nvm en lugar de npm en sí. Es posible que desee volver a revisar cualquier error presentado en npm.

Gracias @ computerquip-streamlabs. Tengo este problema y lo resolví actualizando nvm con,

scoop install [email protected]

Y luego pude instalar el nodo 8.7.0 con nvm.

Instalando nvm 1.1.6 corrige el error con "npm install: el nombre de archivo o la extensión es demasiado largo"

De: C: \ Users \ [nombre de usuario] \ AppDataRoamingnvm

  1. Cambiar archivo settings.txt
root: C:\nvm 
path: C:\Program Files\nodejs 
arch: 64 
proxy: none
  1. Copie dos archivos elevate.cmd y elevate.vbs en: C: nvm

¡Entonces funcionó para mí!

Reapertura ya que varios usuarios todavía se encuentran con esto.

FWIW, estoy ejecutando Windows 10, habilité rutas de archivo largas, pero aún no pude instalar versiones de nodo por encima de 6.x ... debido al problema con la ruta de archivo larga en npm v 5.6, actualizando a nvm 1.1.6 solucionó el problema para mí.

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