36

我对 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 以防万一。看起来我有什么问题 - 但我无法弄清楚。

不确定这是否有帮助,但 brew doctor 和 $NODE_PATH 在 $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 的建议,现在我的角度发生器工作正常。但是,当我安装另一个生成器(chrome-extension)时,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

对我来说奇怪的是,如果我运行yo --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

4 回答 4

49

我尝试在 Ubuntu 精确32 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 建议的修复方法与宣传的一样有效。

于 2014-01-11T18:14:15.657 回答
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

现在我指向 node_modules目录所以我安装的所有新 npm 模块都找到了正确的位置:/usr/local/share/npm/lib/node_modules

但不是yo

我跑了一个which yo,我的路是

/usr/local/bin/yo

这个二进制文件指向 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能够毫无问题地找到它们!

于 2014-02-12T23:22:37.657 回答
7

我完全卸载了yeoman,然后重新安装了它

npm remove -g yo
npm install -g yo

这解决了我缺少角度生成器的问题。

于 2013-11-18T03:02:51.653 回答
1

听起来你的 npm 可能不正常。检查安装的位置: npm config get prefix 是您希望安装软件包的位置吗?那是他们目前安装的地方吗?

列出里面的内容:

ls $(npm config get prefix)/lib/node_modules

这将列出全局安装的 npm 包。

npm list -g

会列出当前安装的东西。确保 yo 和生成器列在顶层。

要删除 yo 的东西并重新开始:

npm remove -g yo generator-* yeoman-generator
npm install -g yo generator-angular

那应该可以解决问题。

于 2013-08-21T15:26:17.023 回答