web-dev-qa-db-fra.com

Comment réparer "yo: command not found" après l'installation de Yeoman

En suivant ces instructions, j'ai essayé d'installer yeoman à l'aide de npm deux fois: http://yeoman.io/learning/index.html

Après le premier échec, j'ai désinstallé le noeud en suivant les instructions suivantes: Comment désinstaller complètement Node.js et le réinstaller depuis le début (Mac OS X) avec une erreur: 

[Yeoman Doctor] Uh oh, I found potential errors on your machine
---------------

[Error] NPM root value is not in your NODE_PATH
  [info]
    NODE_PATH = /Users/joanna/.nvm/v0.10.22/lib/node_modules:.
    NPM root  = /Users/joanna/.node/lib/node_modules

  [Fix] Append the NPM root value to your NODE_PATH variable
    Add this line to your .bashrc
      export NODE_PATH=$NODE_PATH:/Users/joanna/.node/lib/node_modules
    Or run this command
      echo "export NODE_PATH=$NODE_PATH:/Users/joanna/.node/lib/node_modules" >> ~/.bashrc && source ~/.bashrc

J'ai collé cette commande dans, puis j'ai à nouveau exécuté npm install -g yo

Après avoir suivi les instructions du site yeoman à nouveau, il ne trouve toujours pas yeoman. Je reçois cette erreur: - bash: yo: commande non trouvée

Qu'est-ce qui ne va pas? Le docteur Yeoman dit: "Tout va bien!"

29
Joanna Marsden

La source du problème est que vous avez défini NODE_PATH lorsque vous utilisez NVM en même temps. Lorsque vous utilisez NVM, vous ne devez absolument pas avoir de variable NODE_PATH, car NVM installe les packages globaux dans sa racine spécifique à la version.

Supprimez tous les packages contenus dans votre NODE_PATH, supprimez la variable d'environnement et installez yo ainsi que les générateurs ou tout autre package global dont vous avez besoin. Vous verrez que cela cesse de se plaindre et que tout se termine dans le sous-répertoire nvm correspondant à la version actuelle.

Lorsque vous commencez à utiliser une version de nœud différente dans NVM, réinstallez les packages globaux. Cela maintiendra tout organisé par version comme il se doit.

Plus d'informations sur cette discussion ici: https://github.com/creationix/nvm/pull/97

10
Thijs Koerselman

Tout ce que j'avais à faire était de ajouter cette ligne à .bash_profile

export PATH="$PATH":~/.node/bin

Vous pouvez exécuter ceci pour l'ajouter automatiquement:

printf "\nexport PATH=\"\$PATH\":%s\n" ~/.node/bin >> ~/.bash_profile

Testé sous OS X 10.9, 10.10, 10.11 et Ubuntu 14.04

23
bfred.it

Version courte:

Dans votre shell, tapez les commandes suivantes:

  1. npm config set prefix ~/npm

  2. echo "export NODE_PATH=$NODE_PATH:/home/$USER/npm/lib/node_modules" >> ~/.bashrc && source ~/.bashrc

  3. Puis réinstallez Yeoman:

    npm install -g yo

Alors tout devrait bien fonctionner!

Explication:

Si une condition similaire existait, sauf que la commande fonctionnait, mais que les générateurs installés n'apparaissent pas après leur installation, cela a résolu le problème.

Le problème est que votre chemin npm est défini sur/usr/local, qui est un répertoire qui nécessite des privilèges root/Sudo. Étant donné que yo est une commande utilisateur, il ne devrait pas être exécuté en tant que superutilisateur. Exécutez Sudo yo, Yeoman vous le dira explicitement.

J'ai également essayé de chown -R $USER:$USER /usr/local et chmod -R /user/local +rw, mais aucun de ceux-ci n'a aidé.

N'oubliez pas que les modules de noeuds (les générateurs sont également des modules de noeuds) précédemment installés dans/usr/local risquent de ne plus être disponibles et nécessiteront une réinstallation.

18
Oleg Belousov

Pour moi sur Ubuntu, seuls les éléments suivants ont fonctionné pour moi ...

Ubuntu

Testé sur Ubuntu 14.04.2

Il s’agit d’une installation de base d’Ubuntu 14.04.2 sur VirtualBox avec Ubuntu-trusty-64.

Je venais d'installer des nœuds et npm frais et ils fonctionnaient bien.

npm install -y -g yo
echo export PATH="$HOME/npm/bin:$PATH" >> ~/.bashrc
npm config set prefix ~/npm
echo "export NODE_PATH=$NODE_PATH:/home/$USER/npm/lib/node_modules" >> ~/.bashrc && source ~/.bashrc
npm install -y -g yo

oui, je devais installer yeoman, résoudre les problèmes de chemin, puis réinstaller yeoman.

Les explications sont ci-dessus d'Oleg Tikhonov et bfred.it

12
steven iseki

J'ajoute que j'utilise OS X 10.11.1, le code mentionné par steve fonctionne également pour moi.

npm install -y -g yo
echo export PATH="$HOME/npm/bin:$PATH" >> ~/.bashrc
npm config set prefix ~/npm
echo "export NODE_PATH=$NODE_PATH:/home/$USER/npm/lib/node_modules" >> ~/.bashrc && source ~/.bashrc
npm install -y -g yo
4
Jason

Après avoir essayé la suggestion ci-dessus, j'ai remarqué que yeoman était installé, comme prévu, dans /Users/joanna/.node/bin/yo. J'ai mis en place des liens symboliques vers yo, grunt et bower dans /usr/local/bin avec

ln -s /Users/joanna/.node/bin/yo /usr/local/bin/yo
ln -s /Users/joanna/.node/bin/grunt /usr/local/bin/grunt
ln -s /Users/joanna/.node/bin/bower /usr/local/bin/bower

Tout fonctionne maintenant, mais je crains que les liens ne posent problème à l'avenir. Y a-t-il une meilleure solution?

4
Joanna Marsden

Vérifiez où votre npm est installée:

where npm

L’exécution de la commande ci-dessus listera le répertoire où se trouve npm, comme suit:

/usr/local/Cellar/node/5.1.0/libexec/npm/bin/npm

Copiez le chemin dans le dossier bin et exportez-le sous la forme d'une variable PATH, comme ci-dessous:

export PATH=$PATH:/usr/local/Cellar/node/5.1.0/libexec/npm/bin
0
Arpit

J'ai utilisé : 

$HOME/npm/bin

Et ça a fonctionné!

Dans MAC OSX

0
Despertaweb

Dans mon cas je devais exécuter:

npm config delete prefix

puis définissez une version nvm 

nvm use 8

et il fonctionne

0
Badr Bellaj