我对Yeoman发电机有问题。如果我运行“npm install [generator-name] -g”,它们就安装得很好。然而,当我尝试运行“yo [generator-name]时,yeoman似乎无法找到生成器。如果我只运行”yo“,它也不会列在我的其他生成器中。我已经尝试了一堆生成器和结果总是一样的。
经过一番调查后,我发现下载的生成器已放入
/usr/local/lib/node_modules/
但我的其他发电机放在
/usr/local/lib/share/npm/lib/node_modules/
以下是我的机器http://i.imgur.com/DxWTYHb.png上的外观图像,我正在运行OSX以防万一。看起来我有些不对劲 - 但我无法理解。
不确定这是否有帮助,但是当$ PATH返回时,brew医生和$ NODE_PATH不返回任何内容:
-bash:
/usr/local/share/npm/bin:
/Users/marcus/.rvm/gems/ruby-2.0.0-p247/bin:
/Users/marcus/.rvm/gems/ruby-2.0.0-p247@global/bin:
/Users/marcus/.rvm/rubies/ruby-2.0.0-p247/bin:
/Users/marcus/.rvm/bin:
/usr/bin:
/bin:
/usr/sbin:
/sbin:
/usr/local/bin:
/usr/local/git/bin: No such file or directory
的更新
我尝试了Eddie Monge Jr建议的东西,现在我的角度发生器工作正常。然而,当我安装另一台发电机(镀铬扩展)时,yeoman坚持认为它没有安装/找到。
当我运行 ls $(npm config get prefix)/ lib / node_modules 时,我得到了这个:
bower generator-mocha
generator-angular grunt-cli
generator-chrome-extension npm
generator-karma yo
npm list -g 会返回此内容(我删除了很多通用内容)
/usr/local/lib
├─┬ bower@1.2.3
├─┬ generator-angular@0.4.0
│ └─┬ yeoman-generator@0.13.3
├─┬ generator-chrome-extension@0.2.3
│ └─┬ yeoman-generator@0.12.3
├─┬ generator-karma@0.5.0
│ └─┬ yeoman-generator@0.13.3
├─┬ generator-mocha@0.1.1
│ └─┬ yeoman-generator@0.10.5
├─┬ grunt-cli@0.1.9
├─┬ npm@1.3.5
└─┬ yo@1.0.0
对我来说,奇怪的部分是如果我运行哟 - help 我会得到一个奇怪的生成器列表
[?] What would you like to do?
[ ] Run the Angular generator
[ ] Run the Foundation generator
[ ] Run the H5bp generator
[X] Run the Mocha generator
[ ] Run the Webapp generator
[ ] Run the Karma generator
[ ] Update your generators
[ ] Install a generator
[ ] Find some help
[ ] Get me out of here!
答案 0 :(得分:50)
我尝试在Ubuntu exact32 vagrant vm上安装Yeoman。我遇到了同样的问题:Yeoman没有找到我安装的发电机,尽管在安装这些发电机时没有出错。文件已经到位,权限似乎没问题。
以上解决方案对我不起作用。
我跑了
yo doctor
看看出了什么问题,事实证明,以下是问题所在:
[Yeoman Doctor] Uh oh, I found potential errors on your machine
---------------
[Error] NPM root value is not in your NODE_PATH
[info]
NODE_PATH = /usr/lib/nodejs:/usr/lib/node_modules:/usr/share/javascript
NPM root = /home/vagrant/npm/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:/home/vagrant/npm/lib/node_modules
Or run this command
echo "export NODE_PATH=$NODE_PATH:/home/vagrant/npm/lib/node_modules" >> ~/.bashrc && source ~/.bashrc
Yeoman Doctor建议的解决方案就像宣传的一样。
答案 1 :(得分:24)
我遇到了这个问题,我希望它能帮到某个人。 我相信升级NPM会给我带来这个初始问题。
/usr/local/lib/node_modules
过去我的很多模块的位置。由于在某些时候升级节点,目录变为
/usr/local/share/npm/lib/node_modules
当我运行新安装时,例如:
npm install -g grunt-cli
我从命令行运行grunt
它不会“找到”它(因为它不在我的新node_modules目录中)。我在.bash_profile中设置了这个:
export PATH=$PATH:/usr/local/share/npm/bin
现在我指向 new node_modules
目录
所以我安装的所有新npm模块都找到了正确的位置:/ usr / local / share / npm / lib / node_modules
但不是yo
我跑了which yo
我的路径是
/usr/local/bin/yo
此二进制文件指向 OLD node_modules
安装@
/usr/local/lib/node_modules
我的解决方案就是这样做
rm /usr/local/bin/yo
npm remove -g yo
对yo
的旧引用已不复存在,现在我可以
npm install -g yo
这会将其添加到新的node_modules
位置
/usr/local/share/npm/lib/node_modules
现在新的'yo'引用了正确的node_modules安装基础
source ~/.bash_profile
然后我们可以看到yo是从正确的位置引用的
which yo
/usr/local/share/npm/bin/yo
所有未来的生成器都将放置在正确的node_modules
目录中,yo
将能够毫无问题地找到它们!
答案 2 :(得分:7)
我完全卸载了yeoman,然后重新安装了它
npm remove -g yo
npm install -g yo
这解决了我丢失角度生成器的问题。
答案 3 :(得分:1)
听起来你的npm可能不合适。检查安装的位置: npm config获取前缀 这是你期望安装包的地方吗?那是他们目前安装的地方吗?
列出其中的内容:
ls $(npm config get prefix)/lib/node_modules
这将列出全局安装的npm包。
npm list -g
将列出当前安装的东西。确保你和发电机列在最顶层。
删除你的东西并重新开始:
npm remove -g yo generator-* yeoman-generator
npm install -g yo generator-angular
那应该解决问题。