Mac OSX LionでNodeをセットアップしようとしています。すべて正常に動作しているようですが、グローバルモジュールフォルダからモジュールをインポートできないようです。エラーが発生します。
Error: Cannot find module <module>
これを実行するとnode -e require.paths
、次のような応答が返されます。
[ '/usr/local/lib/node_modules',
'/Users/Me/.node_modules',
'/Users/Me/.node_libraries',
'/usr/local/Cellar/node/0.4.12/lib/node' ]
これは正しいです。私のモジュールは確かに /usr/local/lib/node_modules にインストールされています。ただし、スクリプトを実行しようとすると、次のメッセージが表示されます。
Error: Cannot find module 'socket.io'
at Function._resolveFilename (module.js:326:11)
at Function._load (module.js:271:25)
at require (module.js:355:19)
at Object.<anonymous> (/Users/Me/node/server.js:2:10)
at Module._compile (module.js:411:26)
at Object..js (module.js:417:10)
at Module.load (module.js:343:31)
at Function._load (module.js:302:12)
at Array.<anonymous> (module.js:430:10)
at EventEmitter._tickCallback (node.js:126:26)
私の .bash_profile は次のようになります:
export PATH=/usr/local/mysql/bin:$PATH
export NODE_PATH=/usr/local/lib/node_modules
export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/usr/local/mysql/lib/"
助けていただけるとありがたいのですが、なぜライブラリをインポートできないのか全くわかりません。
ベストアンサー1
Node.js は環境変数を使用して、NODE_PATH
モジュール検索パスに含める追加のディレクトリを指定できます。コマンドnpm
を使用して、グローバル モジュールが保存されている場所を確認npm root -g
できます。これら 2 つを組み合わせると、次のコマンド (Linux の場合) でグローバル モジュールが検索パスに含まれていることを確認できます。
export NODE_PATH=$(npm root --quiet -g)