web-dev-qa-db-fra.com

erreurs d'installation npm sur vagrant/Homestead/Windows: EPROTO: erreur de protocole, lien symbolique

Je construis mon premier projet dans Laravel et j'essaie d'utiliser Elixir à l'aide de Homestead sous Windows 8.1. J'ai frappé le problème connu de npm/vagrant de too-long-path-names: https://harvsworld.com/2015/how-to-fix-npm-install-errors-on-vagrant- sur-windows-parce-que-les-chemins-sont-trop-longs/

J'ai donc fait la modification d'une ligne recommandée dans cet article (dieu merci pour ce gars-là), puis j'ai exécuté (avec et sans Sudo): Npm install --no-bin-links

Cela m'a fait avancer et maintenant je reçois deux types d'erreurs différentes: des erreurs 'Accès en écriture manquant' et un tas d'erreurs "EACCES": 

La sortie d'erreur me donne mon indice suivant dans la chasse au trésor (je pense): S'il vous plaît essayez de réexécuter cette commande en tant que root/administrateur

Cela m'amène à ce message , mais la différence est qu'il n'y a pas de changement, même après avoir utilisé Sudo (ou mis à jour mes autorisations utilisateur de la manière suivante): 

Sudo chown -R $ USER/usr/local

Sudo chown -R $ (whoami) ~/.npm

Mise à jour: ensuite, après la suggestion ci-dessous, des erreurs EPROTO et EXTXTBSY (même après avoir suivi la suggestion invitée de renommer npm-debug.log:  enter image description here

J'ai donc essayé de lancer gulp pour voir si cela me donnerait des indices, et la sortie d'erreur m'a fait faire: 

Sudo npm rebuild node-sass

Une exécution qui me donne les mêmes erreurs EPROTO et ETXTBSY et le fichier npm-debug.log indique: Error EPROTO: erreur de protocole, lien symbolique '../node-sass/bin/node-sass' -> '/ home /vagrant/Code/Family-laravel/node_modules/laravel-elixir/node_modules/gulp-sass/node_modules/.bin/node-sass '

Puis, après avoir travaillé sur une autre chose pendant une heure, je suis revenu frais et j'ai refait ces étapes. Cette fois, j'ai eu beaucoup moins d'erreurs:

  • Sudo npm -g installe npm @ latest (bien)

  • Sudo npm install --no-bin-links (juste l'erreur ETXTBSY et une erreur dans le plugin 'run sequence', dans la tâche 'sass')

  • Sudo npm reconstruit node-sass --no-bin-links (pas d'erreurs!)

  • gulp (une seule erreur: introuvable: notify-send)

Se rapprocher!

18
Diane Kaplan

J'essaie de résoudre ce problème depuis des semaines. Voici ce que j'ai fait pour que cela fonctionne sans utiliser mon environnement hôte:

J'ai mis à jour le noeud avec la dernière version de Homestead en fonction de nodeource.com:

Sudo apt-get install --yes nodejs
curl --silent --location https://deb.nodesource.com/setup_4.x | Sudo bash -

J'ai mis à jour npm vers la dernière version de Homestead. Cela devrait être fait après la mise à jour du noeud:

Sudo npm -g install npm@latest

J'ai exécuté npm install dans le répertoire du projet laravel. J'ai également dû utiliser la force pour installer toutes les dépendances:

Sudo npm install --no-bin-links
Sudo npm cache clear
Sudo npm install --force --no-bin-links

J'ai reconstruit node-sass en fonction d'une erreur grave:

Sudo npm rebuild node-sass --no-bin-links

Pendant tout ce processus si quelque chose échoue ou après chaque installation, j'ai utilisé:

Sudo npm cache clear

Mon hôte est Windows 10, avec le dernier boîtier virtuel, le dernier vagabond, le dernier Homestead. J'ai utilisé git bash en tant qu'administrateur et ssh into vagrant utilisant git bash.

Jusqu'à présent, j'ai seulement testé et confirmé que mon gulp fonctionne. Il est possible que d'autres dépendances doivent être reconstruites.

J'espère que cela t'aides!

39
Adam

La cause de votre erreur EACCES initiale est que vous avez utilisé Sudo sans utiliser l'option -H. NE JAMAIS utiliser Sudo npm. Utilisez TOUJOURS Sudo -H npm.

Les instructions sur Internet partout (y compris les documents NPM) sont tout simplement fausses.

1
Rich Remer