安装 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/local
和chmod -R /user/local +rw
,但这些都没有帮助。
请记住,之前安装在 /usr/local 中的节点模块(生成器也是节点模块)可能不再可用,需要重新安装。
【讨论】:
非常感谢您的建议。我尝试了您的建议,并确认我的 $NODE_PATH 和我的 NPM 根是相等的。 (我在 Mac 上,所以值与您给出的值略有不同。$NODE_PATH
和 npm 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”的主要内容,如果未能解决你的问题,请参考以下文章