唯物是真 @Scaled_Wurm

プログラミング(主にPython2.7)とか機械学習とか

npmでインストールしたライブラリが動かないと思ったらNODE_PATHを設定し忘れていた(Windows)

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