Windowsでnpm -gで入れたライブラリがコマンドラインでは呼び出せるのに,node.jsからrequireで呼ぶと以下のようなエラーメッセージが出て動かないので困っていました.
Error: Cannot find module 'express' at Function._resolveFilename (module.js:332:11) at Function._load (module.js:279:25) at Module.require (module.js:354:17) at require (module.js:370:17) at repl:1:2 at REPLServer.eval (repl.js:80:21) at Interface.<anonymous> (repl.js:182:12) at Interface.emit (events.js:67:17) at Interface._onLine (readline.js:162:10) at Interface._line (readline.js:426:8)
調べたところ,WindowsだとNODE_PATHの環境変数を設定しないと動かないみたいです.
……CoffeeScriptとかのコマンドは呼び出せるのに,なんで中途半端にパスが通ってないんだろう?
パスを通す場所
Windows Vista, 7なら"C:\Users\ユーザー名\AppData\Roaming\npm\node_modules"
XPならおそらくApplication Dataの同様の場所.
パスが通っているかの確認方法
以下のいずれかを実行して,ライブラリをインストールしたディレクトリが含まれているか確認.
process.env.NODE_PATH
require("module").globalPaths