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!"
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
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
Version courte:
Dans votre shell, tapez les commandes suivantes:
npm config set prefix ~/npm
echo "export NODE_PATH=$NODE_PATH:/home/$USER/npm/lib/node_modules" >> ~/.bashrc && source ~/.bashrc
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.
Pour moi sur Ubuntu, seuls les éléments suivants ont fonctionné pour moi ...
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
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
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?
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
J'ai utilisé :
$HOME/npm/bin
Et ça a fonctionné!
Dans MAC OSX
Dans mon cas je devais exécuter:
npm config delete prefix
puis définissez une version nvm
nvm use 8
et il fonctionne