ぽかぽかウンティの自由帳

ぽかぽか動物園から投稿します。

node.js の express 3.0.x へのバージョンアップ対応と dotcloud へのデプロイ

気づいたら Heroku | Cloud Application Platformnode.js 0.8.x 以上じゃないとデプロイできなくなっていて、合わせて Express - node.js web application framework も最新の 3.0.x に更新しようとしたらハマった。

対象アプリケーションは supercaracal/duelshooting_online · GitHub

まず、 Socket.IO: the cross-browser WebSocket for realtime apps. が動かなくなった。

Migrating from 2.x to 3.x · visionmedia/express Wiki · GitHub
> Socket.IO compatibility

createServer() が deprecated になっていたので、言うとおりに express() に変えたら、express() が http のインスタンスを返さなくなったらしく、http.createServer() でラップして socket.io に渡さないといけなくなっていた。

これで package.json を更新して heroku はデプロイできた。

しかし、これだけでは dotCloud - One home for all your apps にはデプロイできなかった。

上記の記事も参考にしたが、 express 2.5.x での話だった。

dotCloud - Node.Js Service を読んで dotcloud の node のバージョン指定は、package.json ではなく dotcloud.yml でするものなのだと初めて知った。

今までデフォルトの 0.4.x で動いていたのか。。

0.8.x を指定したら普通に、 dotcloud にもデプロイできた。