Node 0.7.x において npm install -g express すると Express 1.0.7 がインストールされてしまう.
現在 (2012-05-03),Express は 2.5.9 が最新版として出ていて,3.0.0 も alpha が出ている (参考 : http://search.npmjs.org/#/express) .そんな中で 1.0.7 がインストールされるというのはあまりにアレである.そしてそれがエラー無く動くのならともかくすぐにコケる.
express コマンドで何をやっても
node.js:256
throw e; // process.nextTick error, or 'error' event on first tick
^
Error: The "sys" module is now called "util".
at sys.js:1:69
at NativeModule.compile (node.js:583:5)
at Function.require (node.js:551:18)
at Function._load (module.js:297:25)
at Module.require (module.js:357:17)
at require (module.js:373:17)
at Object.<anonymous> (/****/node_modules/express/bin/express:8:11)
at Module._compile (module.js:444:26)
at Object..js (module.js:462:10)
at Module.load (module.js:351:32)
とエラーが出る.
このエラー自体は Express 2.x で修正されている (参考 : https://github.com/visionmedia/express/issues/1025) らしい.
しかし,Express 2.x では Node 0.8.x に対応しない (参考 : https://github.com/visionmedia/express/issues/1004#issuecomment-3922956) らしい.
また,このエラー自体の原因は
Express.jsに対応したConnect.jsのバージョンがどうやらインストールされていないらしい。インストールしているExpress.jsのバージョンは1.0.7で、そのバージョンのExpress.jsが対応しているConnect.jsは0.5.10らしい。しかしnpmからインストールするとConnect.jsは1.0.1がインストールされてしまうためにエラーとなっている
(引用元 : http://my-clip-devdiary.blogspot.jp/2012_02_01_archive.html)
らしい.
しかし,そもそもなんで Node 0.7.x で Express 1.0.7 がインストールされることになるのかよく分かりません.(どなたか知っていればご教授下さい)
まぁ,なので Express をひとまず使ってみるなら今のところは Node 0.6.x を使いましょう.というか不必要に開発版を使うなってことですかね.Node 0.6.15 を使えば Express 2.5.8 が入って普通に使えました.
Node + Express の練習には http://qiita.com/items/ff21dfc0e53f52107b1a をどうぞ.