Pro AngularJS をみて AngularJS を勉強している最中なのですが、本題に入る前の以下の node スクリプトが動きません。

var connect = require('connect');
connect.createServer(
  connect.static("../angularjs")
).listen(5000);

エラーは以下の通り。

pollux:pro-angularjs hoge$ node server.js

/Users/hoge/git/github/pro-angularjs/server.js:3
  connect.static("../angularjs")
                ^
TypeError: Object function createServer() {
  function app(req, res, next){ app.handle(req, res, next); }
  merge(app, proto);
  merge(app, EventEmitter.prototype);
  app.route = '/';
  app.stack = [];
  return app;
} has no method 'static'
    at Object. (/Users/hoge/git/github/pro-angularjs/server.js:3:17)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:906:3
pollux:pro-angularjs ohisa$

手元の環境は Mac 上の homebrew で構築していて以下のような構成

pollux:pro-angularjs hoge$ npm list
/Users/ohisa
├─┬ [email protected]
│ ├─┬ [email protected]
│ │ └── [email protected]
│ ├─┬ [email protected]
│ │ ├─┬ [email protected]
│ │ │ └── [email protected]
│ │ └── [email protected]
│ ├── [email protected]
│ └── [email protected]
└─┬ [email protected]
  ├── [email protected]
  ├── [email protected]
  └─┬ [email protected]
    ├── [email protected]
    ├── [email protected]
    ├─┬ [email protected]
    │ └── [email protected]
    ├── [email protected]
    ├── [email protected]
    ├── [email protected]
    └── [email protected]

pollux:pro-angularjs ohisa$

原因は connect のバージョンが 3 になり、かなり API が変わってしまったためでした。まぁ、保守サポートがあるわけでもないのでしかたないところですが、この辺は最先端 (細い枝) ということで受け入れるしかないのかも知れませんね。 なお、Stack Overflow の ここここ が参考になりました。 修正したスクリプトはこちら

var connect = require('connect');
var serveStaic = require('serve-static');

var app = connect();
app.use(serveStaic("../angularjs"));
app.listen(5000);

事前に serve-static モジュールをインストールする必要があります。

$ npm install serve-static