为什么我的Yeoman发电机安装在错误的位置?

时间:2013-08-06 13:08:52

标签: npm yeoman

我对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!

4 个答案:

答案 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

那应该解决问题。