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

Posted

技术标签:

【中文标题】安装 Yeoman 后如何修复“yo: command not found”【英文标题】:How to fix "yo: command not found" after installing Yeoman 【发布时间】:2014-02-08 06:50:42 【问题描述】:

按照这些说明,我尝试使用 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

再次按照 yeoman 站点的说明进行操作后,仍然找不到 yeoman。我收到此错误: -bash: yo: 找不到命令

怎么了? Yeoman Doctor 说:“一切看起来都很好!”

【问题讨论】:

错误提示NPM PATH和NODE PATH应该是smae 【参考方案1】:

就我而言,我必须执行:

npm config delete prefix

然后设置一个nvm版本

nvm use 8

它可以工作

【讨论】:

在此之后不得不重新安装你,但效果很好【参考方案2】:

检查您的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

【讨论】:

【参考方案3】:

我需要做的就是添加这一行到.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 上测试

【讨论】:

在 OSX 上对我来说是以下行:export PATH=$PATH:~/.node/bin 并且不要忘记重新启动提示以使更改生效。 @nilsi AFAIK 它做同样的事情;你的只是使用不同的字符串插值方法【参考方案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

【讨论】:

如果调用“npm install -y -g yo”时出现任何错误,请按照建议运行“sudo npm install -y -g yo”。【参考方案5】:

我用过:

$HOME/npm/bin

而且效果很好!

MAC OSX

【讨论】:

【参考方案6】:

对于 Ubuntu 上的我来说,只有以下对我有用...

Ubuntu

在 Ubuntu 14.04.2 上测试

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

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

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

【讨论】:

【参考方案7】:

短版:

在您的 shell 中,键入以下命令:

    npm config set prefix ~/npm

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

    然后重新安装 Yeoman:

    npm install -g yo

那么一切都应该正常!

说明:

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

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

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

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

【讨论】:

非常感谢您的建议。我尝试了您的建议,并确认我的 $NODE_PATH 和我的 NPM 根是相等的。 (我在 Mac 上,所以值与您给出的值略有不同。$NODE_PATHnpm config get prefix 都是 /Users/joanna/.node/lib/node_modules)。我已经尝试重新安装 Yeoman,但我仍然得到 yo: command not found。有什么想法吗? 按照这个提示,没有骰子,仍然哟:找不到命令... :( 为我工作。谢谢! 工作就像一个魅力!谢谢【参考方案8】:

在尝试上述建议后,我注意到 yeoman 已按预期安装在 /Users/joanna/.node/bin/yo 中。我在/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

现在一切正常,但我担心这些链接将来可能会导致问题。有没有更好的解决方案?

【讨论】:

对任何运行 Linux 的人的快速说明。您可能需要将路径更改为以下内容: ln -s /home/joanna/.node/bin/yo /usr/local/bin/yo【参考方案9】:

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

删除 NODE_PATH 中的所有包,删除环境变量,然后安装 yo 和生成器或您需要的任何其他全局包。你会看到它停止抱怨,一切都在与当前版本匹配的 nvm 子目录中结束。

当您开始在 NVM 中使用不同的 Node 版本时,请重新安装全局包。这将使所有内容按版本整齐排列。

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

【讨论】:

以上是关于安装 Yeoman 后如何修复“yo: command not found”的主要内容,如果未能解决你的问题,请参考以下文章

Yeoman - 无法安装生成器

node,Yeoman,Bower,Grunt的简介及安装

如何使用 Yeoman 记录彩色消息?

如何修复凉亭 ECMDERR

为什么选择 Yeoman 及 Yeoman 的安装

Yeoman 官网教学案例:使用 Yeoman 构建 WebApp