Nvm-windows: L'installation nvm échoue avec "Le nom de fichier ou l'extension est trop long"

Créé le 21 juil. 2017  ·  25Commentaires  ·  Source: coreybutler/nvm-windows

Mon environnement

Windows 8

J'utilise la version NVM4W:

1.1.5

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

  • [] settings.txt
  • [] support 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 qui s'échappe (Avez-vous essayé la version 1.1.6+?)
  • [x] Un environnement shell standard (terminal / powershell)
  • [] Un environnement shell non standard (Cmder, Hyper, Cygwin, git)

Comportement prévisible

Installer la version du nœud 8.2.1

Comportement réel

Échoue avec l'erreur The filename or extension is too long

Étapes pour reproduire le problème:

λ 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.

Bien que ce soit un problème, je doute qu'il existe un moyen direct de le résoudre. Cependant, j'ai créé ce problème pour partager comment je l'ai contourné et comment il pourrait peut-être être évité.

J'ai installé la dernière pré-version de nvm ( v1.1.6 ) mais cette fois je l'ai installée sur C:\nvm\ pour conserver la longueur du chemin. A réussi à installer le nœud v8.2.1 après cela. Pensez-vous qu'il est judicieux d'installer nvm sur ce chemin par défaut?

upstream-bug

Commentaire le plus utile

Si vous installez la dernière version (1.1.6) et au lieu de C:/Users/<username>/AppData/Roaming/nvm vous sélectionnez C:/nvm comme dossier d'installation, cela devrait fonctionner. Je n'ai eu aucun problème à installer 8.4.0 :)

Pour moi, utiliser nvm root pour changer le chemin de nvm n'a pas fonctionné, j'ai eu des messages d'erreur étranges. Il n'a pas copié nvm <commands> et même node cessé de fonctionner.

Le clonage manuel de npm comme @michaelkdh l'a suggéré n'a pas non plus fonctionné et semble hackish par rapport à une installation propre

Tous les 25 commentaires

Quelque chose ne va pas avec cette installation ... Avez-vous installé deux versions de NVM en même temps par hasard?

Il est peut-être trop tard à ce stade, mais que produit echo %NVM_SYMLINK% ?

Non. Je n'avais pas installé 2 versions de NVM au moment où l'erreur s'est produite.

Il est peut-être trop tard à ce stade, mais que produit echo %NVM_SYMLINK% ?

En fait, pas trop tard. J'avais un terminal ouvert qui avait toujours l'ancien environnement.

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

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

De plus, j'avais installé et j'utilisais plusieurs versions de nœud via NVM auparavant:

λ 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

J'ai le même problème.
Windows 10
Coque Cmder
NVM 1.1.5

Cela se produit avec les nœuds 8.2.0 et 8.2.1
8.1.4 et 8.1.3 fonctionnent 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.

Je me demande si nous devrions aborder cela avec npm en amont.
@clowenhg Si vous installez nvm directement sur C:\nvm , le problème sera résolu mais vos installations de nœuds existantes ne seront plus reconnues. J'avais déplacé les dossiers de plusieurs nœuds vers C:\nvm et j'ai pu les voir listés mais je n'ai jamais eu la chance de tester quoi que ce soit. Merci à la mise à jour de Windows et à la boucle de démarrage.

Cela fonctionnerait probablement, mais cela semble être un travail temporaire jusqu'à ce que la prochaine chose veuille aller plus loin dans un répertoire. Alors oui, soulever cela comme un problème pour le NMP serait probablement une bonne décision.

Étant donné que 8 n'est pas encore à sa version finale LTS, je reviens juste à 8.1.4 pour le moment.

Il semble y avoir un certain nombre de problèmes avec les nouvelles versions de npm, en particulier celles qui incluent le support npx. J'ai ajouté le support de npx dans la branche master et je le publierai lorsque la 1.1.6 deviendra officielle (en cours de test). Toutefois; même dans cette branche, npx échoue toujours (il échoue également via le programme d'installation de Windows Node autonome sans NVM4W).

Je crois que c'est un problème npm, pas un problème NVM4W. Je ferme le problème et le marque comme un problème en amont.

@coreybutler Une petite clarification si cela ne vous dérange pas. Pourquoi avez-vous dû apporter des modifications pour le support npx? Même avec le nœud v8.1 , npx était disponible et utilisable, bien que bogué sous Windows. Mais NVM ne devrait rien avoir à faire pour cela.

Node 8.1 n'a pas été livré avec le support npx. Si vous l'avez dans 8.1, vous devez avoir exécuté npm install -g npm quelque part le long de la ligne pour mettre à jour npm. La commande npx a été ajoutée dans npm v5.3.0, et la première version de Node à être livrée avec npm 5.3.0 était la 8.2.1. Pour plus de détails, voir # 288.

Oui ... Vous avez probablement raison. Je me souviens d'avoir mis à jour npm.

J'ai eu le même problème, la solution que j'ai est de:

  1. installez 8.2.1, qui vous échouera, c'est très bien.
  2. installez la v6.11.2 et copiez 2 fichiers (npm et npm.cmd) de /c:/[username </font>/AppData/Roaming/nvm/v6.11.2 dans le dossier v8.2.1
  3. dans le dossier v8.2.1, faites git clone https://github.com/npm/npm.git

alors tu devrais être bon

Merci @michaelkdh Cela fonctionne pour moi. 👍
Une chose légèrement différente était que lorsque j'ai cloné le «npm.git», il a créé le dossier «npm». Et j'ai dû déplacer le dossier «npm» vers «node_modules».

@ gblue1223 même chose, juste besoin de npm en place. à votre santé,

@coreybutler En fonction du problème que vous avez lié, vous pouvez remplacer les chemins d'installation.

Si vous installez la dernière version (1.1.6) et au lieu de C:/Users/<username>/AppData/Roaming/nvm vous sélectionnez C:/nvm comme dossier d'installation, cela devrait fonctionner. Je n'ai eu aucun problème à installer 8.4.0 :)

Pour moi, utiliser nvm root pour changer le chemin de nvm n'a pas fonctionné, j'ai eu des messages d'erreur étranges. Il n'a pas copié nvm <commands> et même node cessé de fonctionner.

Le clonage manuel de npm comme @michaelkdh l'a suggéré n'a pas non plus fonctionné et semble hackish par rapport à une installation propre

@ peterbakonyi05 Il est toujours très difficile de redéfinir le dossier nvm juste pour l'installer aussi.

@Sieabah Je suis d'accord, tout le problème est bizarre. Cependant je pense que c'est toujours mieux que les 2 autres solutions proposées (en fait aucune d'elles n'a fonctionné pour moi)

Pour ceux qui rencontrent encore ce problème, quelqu'un pourrait-il fournir des étapes pour recréer cette erreur? Ou peut-être un screencast? Je n'ai pas encore vu cela en action.

De plus, j'ai remarqué que beaucoup de gens copient / collent depuis leurs terminaux ... et la syntaxe comme /c/whatever , lambdas, etc. continue d'apparaître ... ce qui indique que les gens utilisent des choses comme Cygwin , git shells, cmder, etc. Veuillez noter que ces shells _ n'adhèrent pas toujours aux standards de la plate-forme Windows_, et qu'ils _do_ affectent la lecture des chemins. Il y a plusieurs autres problèmes qui citent cela, alors essayez tout dans un terminal standard avant de publier pour vous assurer qu'il s'agit d'un problème NVM4W et non d'un problème de terminal-shell.

@coreybutler Voilà, avec cmd.exe

C: \ Users \ Christopher> nvm install 8.4.0
Téléchargement de node.js version 8.4.0 (64 bits) ...
Achevée
Création de C: \ Users \ Christopher \ AppDataRoamingnvm \ temp

Téléchargement de la version 5.3.0 de npm ... Terminé
Installation de 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-up_node_modules \ read-pkgn load-json-filenode_modules \ parse-jsonnode_modules \ error-exnode_modules \ is-arrayish: Le nom de fichier ou l'extension est trop long.

C: \ Users \ Christopher> où nvm
C: \ Users \ Christopher \ AppDataRoamingnvmnvm.exe

C: \ Users \ Christopher> nvm install 8.4.0
Téléchargement de node.js version 8.4.0 (64 bits) ...
Achevée
Création de C: \ Users \ Christopher \ AppDataRoamingnvm \ temp

Téléchargement de la version 5.3.0 de npm ... Terminé
Installation de 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-up_node_modules \ read-pkgn load-json-filenode_modules \ parse-jsonnode_modules \ error-exnode_modules \ is-arrayish: Le nom de fichier ou l'extension est trop long.

C: \ Users \ Christopher> où noeud
C: \ Program Filesnodejsnode.exe

C: \ Users \ Christopher> où npm
C: \ Program Filesnodejsnpm
C: \ Program Filesnodejsnpm.cmd

Je suis également sur nvm version 1.1.5 si cela fait une différence (peut-être que vous êtes sur 1.1.6?)

Je peux confirmer que la mise à jour vers 1.1.6 résout ce problème. Cela a du sens car il semble qu'une partie de la gestion des chemins de fichiers utilise désormais des bibliothèques Go natives.

Cela signifierait également que le bogue de chemin de fichier était dans nvm plutôt que npm lui-même. Tout bogue déposé à npm pourrait vouloir être réexaminé.

Merci @ computerquip-streamlabs. J'ai eu ce problème et je l'ai résolu en mettant à jour NVM avec,

scoop install [email protected]

Et puis je pourrais installer le nœud 8.7.0 avec nvm.

L'installation de nvm 1.1.6 corrige le bogue avec "installation de npm: le nom de fichier ou l'extension est trop long"

De: C: \ Users \ [nom d'utilisateur] \ AppDataRoamingnvm

  1. Modifier le fichier settings.txt
root: C:\nvm 
path: C:\Program Files\nodejs 
arch: 64 
proxy: none
  1. Copiez deux fichiers elevate.cmd et elevate.vbs vers: C: nvm

Ensuite, cela a fonctionné pour moi!

Réouverture car plusieurs utilisateurs sont toujours confrontés à cela.

FWIW, j'utilise Windows 10, j'ai activé les chemins de fichiers longs, mais je n'ai toujours pas pu installer les versions de nœuds supérieures à 6.x ... en raison du problème avec le chemin de fichier long dans npm v 5.6, mise à niveau vers nvm 1.1.6 a corrigé le problème pour moi.

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

Questions connexes

janpio picture janpio  ·  3Commentaires

tomByrer picture tomByrer  ·  4Commentaires

David263 picture David263  ·  3Commentaires

eliavmaman picture eliavmaman  ·  6Commentaires

martijnsenden picture martijnsenden  ·  3Commentaires