web-dev-qa-db-ja.com

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 doctorと$ 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


[〜#〜] update [〜#〜]


Eddie Monge Jrが提案したことを試してみたところ、angularジェネレーターは問題なく動作します。

実行すると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
├─┬ [email protected]
├─┬ [email protected]
│ └─┬ [email protected]
├─┬ [email protected]
│ └─┬ [email protected]
├─┬ [email protected]
│ └─┬ [email protected]
├─┬ [email protected]
│ └─┬ [email protected]
├─┬ [email protected]
├─┬ [email protected]
└─┬ [email protected]

私にとって奇妙な部分は、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!
36
anderssonma

Ubuntu Precision32 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によって提案された修正は、宣伝どおりに機能しました。

50
wkampmann

私はこの問題にぶつかり、誰かの助けになることを望んでいます。 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

newnode_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

そうすれば、適切なスポットから参照されていることがわかります

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

将来のジェネレータはすべて適切なnode_modulesディレクトリに配置され、yoは問題なくそれらを見つけることができます!

24
somedirection

Yeomanを完全にアンインストールしてから再インストールしました

npm remove -g yo
npm install -g yo

これにより、angularジェネレーターが見つからないという問題が修正されました。

7
Sam Barnum

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

それは物事を修正する必要があります。

1
Eddie Monge Jr