Windowsでは、npm install -g したパッケージがエラーになる
公式の node.js のWindowsインストールパッケージをインストールすると node と一緒に npm もインストールされる。
C:\Users\kenchi>npm -g install underscore npm http GET https://registry.npmjs.org/underscore npm http 200 https://registry.npmjs.org/underscore underscore@1.3.3 C:\Users\kenchi\AppData\Roaming\npm\node_modules\underscore C:\Users\kenchi>node > var _ = require('underscore') Error: Cannot find module 'underscore' 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:9 at REPLServer.eval (repl.js:80:21) at repl.js:190:20 at REPLServer.eval (repl.js:87:5) at Interface.<anonymous> (repl.js:182:12) at Interface.emit (events.js:67:17)
でも、-g 付きでインストールしたものを require するとエラーになっちゃう。global でなければ、カレントの .\node_modules 以下にインストールするけど、underscore とかはグローバルがいいな。
ってことでググる。
Node.js の起動オプション、環境変数、npm start の話
環境変数NODE_PATHが必要だと。
C:\Users\kenchi>npm -g bin C:\Users\kenchi\AppData\Roaming\npm (not in PATH env variable)
うちのPCは Windows 7 Home だから。xp だと Documents and Settings\(USER) 以下になる。
で、環境変数APPDATA を使うとOS依存しないで済む。
C:\Users\kenchi>echo %APPDATA% C:\Users\kenchi\AppData\Roaming C:\Users\kenchi>set NODE_PATH=%APPDATA%\npm\node_modules C:\Users\kenchi>echo %NODE_PATH% C:\Users\kenchi\AppData\Roaming\npm\node_modules C:\Users\kenchi>node > require("module").globalPaths [ 'C:\\Users\\kenchi\\AppData\\Roaming\\npm\\node_modules', 'C:\\Users\\kenchi\\.node_modules', 'C:\\Users\\kenchi\\.node_libraries', 'C:\\Program Files\\lib\\node' ]
環境変数NODE_PATH の内容が追加される訳だ。
> var _ = require("underscore") undefined
これでエラーにならなくなる。
ちなみに、nodeとか coffeescript の REPL から抜けるのは、Windowsの cmdだと CTRL+C を2回だ。
参考: npm についてまとめてみる (npmv1.1.0-beta-4/nodev0.6.6)