2017-07-17 10 views
1

は、私は(Node.jsの8.0.0を使用して)このコードのシンプルなラインを実行したかったです。NodeJSパッケージ管理

は、最初はそれが私に与えた:

module.js:487 
    throw err; 
    ^ 
Error: Cannot find module 'bcrypt' 
    at Function.Module._resolveFilename (module.js:485:15) 
    at (...) 
    at evalScript (bootstrap_node.js:432:27) 

だから私は、このコマンドでbcryptのインストールしようとした:

Linuxのdepenciesがなかったので、ソースからのコンパイルにフォールバックした後に(働い
npm install -g --production bcrypt 

私のarmv7プロセッサーで見つかりました)。

しかし、私はまったく同じエラー(モジュール 'bcrypt'を見つけることができません)を試してみました。

「プロジェクトローカル」のインストール後に「-g」オプションを付けないと(私はプロジェクトがなくても)インストールされ、テストコマンドを実行するとbcryptが見つかりました。

npm install bcrypt 

NodeJSをよく知っている人が私にこの奇妙なメカニズムを説明できますか?

答えて

1

グローバルにインストールされたパッケージは、どこからでも自動的には入手できません。あなたのようにインストールすることは、どれくらいの時間がかかるかを考えてできるだけコンパイルしたくないプラットフォーム上での素晴らしいアイデアです。しかし、あなたはまだローカルプロジェクトにグローバルにインストールされたパッケージをリンクする必要があります。

# install globally 
npm install -g --production bcrypt 


# link locally (you must run this in your project's directory) 
npm link bcrypt 

これは単にあなたのローカルプロジェクトのnode_modulesディレクトリにグローバルに取り付けたモジュールが利用できるようになりますシンボリックリンク(複数可)を作成します - それを必要とするプロジェクトごとに一度モジュールを再コンパイルするよりもはるかに高速です。

必要な新しいバージョンがリリースされたら、npm install -g --production bcryptを実行しているbcryptを再度更新することを忘れないようにしてください。プロジェクトでnpm updateを実行するだけでは十分ではありません。

npm linkドキュメント、読んで十分な価値があります。このコマンドの動作は、パッケージ名を引数として実行しないと完全に異なることに注意してください。

関連する問題