2012-02-03 5 views
13

私はこのポストからの命令を使用してNode.jsのためのNVMインストールしている:私は、ノードのバージョンを切り替えると、その後NPMを使用する場合ノードバージョンマネージャ(NVM)NPM

http://www.backdrifter.com/2011/02/18/using-nvm-and-npm-to-manage-node-js/

をモジュールをインストールするには、すべてのモジュールがそのノードのバージョンに固有の 'node_modules'ディレクトリではなく、同じ 'node_modules'フォルダ(〜/ node_modules /)に配置されていますか?

これをどのように修正するかについてのご意見はありますか? https://github.com/creationix/nvm/pull/97からのコメントに基づいて

答えて

29

パッケージが適切なディレクトリで終わる-gグローバルスイッチを使用してNPMでパッケージをインストールする(すなわち .nvm/$ VERSION/libに/ node_modules)しかし、それは何らかの形でプレフィックスを検索していないので、ノードはそれを要求することができません 。

だから、あなたはモジュールを見つけることができないそれらのrequire一つのノードにしようとNVMの正しい場所にモジュールを配置しますがnpm install -g xxxxxを使用。私はまだこの問題を抱えていて、解決策が見つかると更新します。

更新 NPMはnode_modulesを入れない

? (https://docs.npmjs.com/files/folders

  • ローカルインストール(デフォルト):現在のパッケージルートの./node_modulesに情報を入れます。
  • グローバルインストール(-g):/ usr/localに、またはノードがインストールされている場所にstuffを入れます。
  • require()に接続する場合は、ローカルにインストールしてください。
  • コマンドラインで実行する場合は、グローバルにインストールしてください。
  • 両方が必要な場合は、両方の場所にインストールするか、npm linkを使用してください。

私が行ったことは、package.jsonを生成した自分のプロジェクトのルートディレクトリでnpm inithttp://npmjs.org/doc/init.html参照)を実行しました。今私がnpm install xxxxxを実行すると、自分のプロジェクトフォルダにnode_modulesディレクトリが作成されます(これは私の.gitignoreに追加されます)。これは私のコードで必要とするモジュールのために働く。

CoffeeScriptのようなコマンドでは、正しいディレクトリ(.nvm/$ VERSION/lib/node_modules)に入れるnpm install -g coffee-scriptをインストールします。これらのモジュールは必要ありませんが(npmリンクでこの問題は解決するはずです)、私はコマンドを実行できます。つまり、coffeeです。

+0

最後にこれに対する良い答えは、しばらくの間私の頭を叩いていました。 –

1

私は、エクスプレスをグローバルに(-g)インストールしましたが、require( "express")に問題がありました。 Jesse Vogtが言ったように、私はちょうどこのような-gを使わずにexpressを再インストールしました: "sudo npm install express"と今は完璧に動作しています!

+0

その理由を説明できますか? –

+0

あなたに正直であるように。私は知らない、私はこれでかなり初心者です。しかし、Jesseが残したWebサーフィンは(https://docs.npmjs。 "Nodeのrequireのようなものを使用して自分のモジュールからパッケージに依存したい場合は、ローカルにインストールしたい..."というメッセージが表示されました。 違いはわかりませんが、require()を使用してサーバーを実行する必要がある場合は、インストールがローカルで行われる必要があります(w/o -g)。 –

+0

ありがとうございます:) –

関連する問題