为什么我的Yeoman发电机安装在错误的地方?

Yeoman发电机有问题。 如果我运行“npm install [generator-name] -g”,它们安装得很好。 然而,当我尝试运行“哟[发电机名] yeoman似乎无法find发电机。如果我只是运行”哟“我也没有列出我的其他发电机。我已经尝试了一堆发电机和结果总是一样的

经过一点点调查,我发现下载的发电机被放置在

/usr/local/lib/node_modules/ 

但我的其他发电机被放置在

 /usr/local/lib/share/npm/lib/node_modules/ 

这里是我的机器上的图像http://i.imgur.com/DxWTYHb.png ,我正在运行OSX以防万一。 看起来有点不对劲 – 但我无法弄清楚。

不知道这是否有帮助,但酿造医生和$ 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 

UPDATE


我尝试了Eddie Monge Jr的build议,现在我的angular度发生器工作正常。 但是,当我安装另一个发电机(铬扩展)自我坚持,它没有安装/find。

当我运行ls $(npmconfiguration获取前缀)/ lib / node_modules我得到这个:

 bower generator-mocha generator-angular grunt-cli generator-chrome-extension npm generator-karma yo 

npm列表-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 

对我来说,奇怪的部分是如果我运行哟 – 帮助我得到一个奇怪的发电机列表

 [?] 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! 

我试着在Ubuntu精准的stream浪者虚拟机上安装Yeoman。 我遇到了同样的问题:Yeoman没有find我安装的发电机,虽然在安装这些发电机时没有错误。 文件到位,权限似乎没问题。

上述解决scheme不适合我。

我跑了

 yo doctor 

看看出了什么问题,事实certificate,问题如下:

 [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医生build议的解决办法像广告一样工作。

我遇到这个问题,我希望能帮助别人。 我相信升级NPM给我带来了这个最初的问题。

 /usr/local/lib/node_modules 

过去是我很多模块的位置。 由于在某一时刻升级节点,目录变成了

 /usr/local/share/npm/lib/node_modules 

当我将运行新的安装,如:

 npm install -g grunt-cli 

因为我从命令行运行grunt它不会'find'它(这是因为它不在我的新的node_modules目录)。 我在.bash_profile中设置了这个:

 export PATH=$PATH:/usr/local/share/npm/bin 

现在我指向新的 node_modules目录因此,我安装的所有新npm模块find正确的位置:/ usr / local / share / npm / lib / node_modules

但不是yo

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

 /usr/local/bin/yo 

这个二进制文件指向了旧的 node_modules安装@

 /usr/local/lib/node_modules 

我的解决scheme是做到这一点

 rm /usr/local/bin/yo npm remove -g yo 

老的提到yo已经不存在了,现在我可以做了

 npm install -g yo 

这会将其添加到新的node_modules位置

 /usr/local/share/npm/lib/node_modules 

现在新的“哟”引用适当的node_modules安装基础

 source ~/.bash_profile 

那么我们可以看到哟是从正确的位置引用

 which yo /usr/local/share/npm/bin/yo 

所有未来的生成器将被放置在适当的node_modules目录中,并且yo将能够毫无问题地find它们!

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

 npm remove -g yo npm install -g yo 

这解决了我缺lessangular度发生器的问题。

听起来像你的NPM可能会失去作用。 检查安装的东西:npm config get prefix是你想要安装软件包的地方吗? 那是他们目前安装的地方吗?

列出那里有什么:

 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 

这应该解决的事情。