安装Yeoman后如何修复“yo:command not found”

时间:2014-01-18 23:43:15

标签: macos node.js npm osx-mountain-lion yeoman

按照这些说明,我尝试使用npm两次安装yeoman: http://yeoman.io/learning/index.html

第一次失败后,我使用以下说明卸载了节点: How do I completely uninstall Node.js, and reinstall from beginning (Mac OS X)然后,我安装了nvm和node / npm(通过nvm),出现一个错误:

[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

我粘贴了该命令,然后我再次运行npm install -g yo

再次按照自耕农网站的指示,仍然找不到自耕农。我收到此错误: -bash:yo:找不到命令

有什么问题? Yeoman医生说:“一切都好看!”

9 个答案:

答案 0 :(得分:23)

我需要做的就是将此行添加.bash_profile

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

你可以执行这个来自动添加它:

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

在OS X 10.9,10.10,10.11和Ubuntu 14.04上测试

答案 1 :(得分:18)

简短版:

在shell中,键入以下命令:

  1. npm config set prefix ~/npm

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

  3. 然后重新安装Yeoman:

    npm install -g yo

  4. 然后一切都应该正常工作!

    <强>解释

    有一个类似的情况,除了yo命令工作,但安装后没有出现任何已安装的生成器,这解决了这个问题。

    问题是您的npm路径设置为/ usr / local,这是一个需要root / sudo权限的目录,因为yo是一个用户命令,它不应该以超级用户身份运行,如果你' ll尝试运行sudo yo,Yeoman会明确告诉你。

    我也试过chown -R $USER:$USER /usr/localchmod -R /user/local +rw,但没有一个帮助过。

    请记住,以前安装在/ usr / local中的节点模块(yo生成器也是节点模块)可能不再可用,并且需要重新安装。

答案 2 :(得分:12)

对于我在Ubuntu上,只有以下内容对我有用...

Ubuntu的

在Ubuntu 14.04.2上测试

这是使用ubuntu-trusty-64在VirtualBox上基础安装Ubuntu 14.04.2。

我刚安装了node和npm,它们运行良好。

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

是的我必须安装yeoman,修复路径问题,然后重新安装yeoman。

以上解释来自Oleg Tikhonov和bfred.it

答案 3 :(得分:10)

问题的根源是您在同时使用NVM时设置了NODE_PATH。当您使用NVM时,您根本不应该有NODE_PATH变量,因为NVM会在其特定于版本的根目录中安装全局包。

删除NODE_PATH中的所有软件包,删除环境变量,然后安装yo以及所需的生成器或任何其他全局软件包。您将看到它停止抱怨并且所有内容都在与当前版本匹配的nvm子目录中结束。

当您在NVM中开始使用其他节点版本时,请重新安装全局程序包。这样可以保持所有内容整齐有序的版本。

此处有关此讨论的更多信息: https://github.com/creationix/nvm/pull/97

答案 4 :(得分:4)

在尝试上述建议后,我注意到/Users/joanna/.node/bin/yo正如预期的那样安装了yeoman。我使用

/usr/local/bin中设置了与yo,grunt和bower的符号链接
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

现在一切正常,但我担心链接可能会在将来引发问题。有更好的解决方案吗?

答案 5 :(得分:4)

再加上,我使用的是OS X 10.11.1,史蒂夫提到的代码也适用于我。

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

答案 6 :(得分:0)

我用过:

$HOME/npm/bin

它非常有效!

MAC OSX

答案 7 :(得分:0)

检查npm的安装位置:

where npm

运行以上命令将列出npm所在的目录,如下所示:

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

将路径复制到bin文件夹并将其导出为PATH变量,如下所示:

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

答案 8 :(得分:0)

就我而言,我必须执行:

mat-card

然后设置nvm版本

getJobStatus()

它有效