How to fix “yo: command not found” after installing Yeoman

ⅰ亾dé卋堺 提交于 2019-11-29 22:17:13

The source of the problem is that you have NODE_PATH set while using NVM at the same time. When you use NVM you shouldn't have a NODE_PATH variable at all, since NVM installs global packages in its version specific root.

Delete all packages that are in your NODE_PATH, remove the environment variable, and install yo and the generators or any other global packages you need. You will see that it stops complaining and everything ends up in the nvm subdirectory matching the current version.

When you start using a different Node version in NVM, reinstall the global packages. This will keep everything organised neatly by version like its meant to be.

More info on this discussion here: https://github.com/creationix/nvm/pull/97

All I needed to do was adding this line to .bash_profile

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

You can execute this to add it automatically:

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

Tested on OS X 10.9, 10.10, 10.11 and Ubuntu 14.04

Oleg Belousov

Short version:

In your shell, type the following commands:

  1. npm config set prefix ~/npm

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

  3. Then reinstall Yeoman:

    npm install -g yo

Then everything should work fine!

Explanation:

Had a similar condition, except yo command did work, but any installed generators didn't appear after installing them, this solved the issue.

The problem is that your npm path is set to /usr/local, which is a directory that requires root/sudo privileges, since yo is a user command, it shouldn't be ran as a superuser, and if you'll try to run sudo yo, Yeoman will tell you that explicitly.

I also tried to chown -R $USER:$USER /usr/local, and chmod -R /user/local +rw, but none of those helped.

Keep in mind that the node modules(yo generators are also node modules) that were previously installed in /usr/local might no longer be available and will require re-intalling.

For me on Ubuntu only the following worked for me...

Ubuntu

Tested on Ubuntu 14.04.2

This was a base install of Ubuntu 14.04.2 on VirtualBox using ubuntu-trusty-64.

I had just installed node and npm fresh and they were working well.

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

yes I had to install yeoman, fix the path issues, then reinstall yeoman.

The explanations are above from Oleg Tikhonov and bfred.it

After trying the above suggestion, I noticed that yeoman was installed, as expected, in /Users/joanna/.node/bin/yo. I set up symbolic links to yo, grunt, and bower in /usr/local/bin with

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

Everything works now, but I'm concerned that the links might cause problems in the future. Is there a better solution?

Just to add on,I am using OS X 10.11.1, the code as mentioned by steve works for me too.

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

I used :

$HOME/npm/bin

And it pretty worked !

In MAC OSX

Check where your npm is installed:

where npm

Running above command will list the directory where npm is, as follows:

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

Copy the path till bin folder and export the same as a PATH variable, as below:

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

In my case i had to execute :

npm config delete prefix

then set a nvm version

nvm use 8

and it works

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!