node.jsのフレームワーク「express」を動かしてみる。

今の環境は、nodebrewでnode.jsをインストールをして、npmが使える状態になってます。
(環境を作った時のエントリーはこちら -> 「CentOS6.3にnode.js(v0.10.0)をインストールしてみる。」)

expressのインストール

npm install -g express

※npmの-gオプションを付けないと、カレントディレクトリのnode_modules以下にインストールされます。そうすると、当然pathが通ってないので、直接expressコマンドが使えません。-gオプションを付けた場合は、~/.nodebrew/node/v0.10.0/lib/node_modules/にインストールされます。
※現在使用しているnodeのバージョンにsymlinkが張られているので、~/.nodebrew/current/lib/node_modules/でアクセスもできます。

expressのdefaultのテンプレートエンジン「jade」もインストールしておきます。

npm install -g jade

アプリの作成

express test

# 作成されたファイル一覧
tree test
test
├── app.js
├── package.json
├── public
│   ├── images
│   ├── javascripts
│   └── stylesheets
│       └── style.css
├── routes
│   ├── index.js
│   └── user.js
└── views
    ├── index.jade
    └── layout.jade

とりあえず実行してみる

node app.js
-> Error: Cannot find module 'express'

expressはすでにインストールされてるので、Pathが通ってないぽいですね。

Pathを通します。
以前は、require.paths.push(‘/home/nodeuser/.nodebrew/hogehoge’);みたいな感じで、requireの前に書いて、直接Pathを追加できたようですが、この機能は廃止される(廃止された?)ようです。
って事で、NODE_PATHを使うことにします。

vi ~/.bash_profile

# 下記を追加
export NODE_PATH=$HOME/.nodebrew/current/lib/node_modules:$NODE_PATH

# 反映
source ~/.bash_profile

再度実行

node app.js
-> Express server listening on port 3000

とりあえずdefaultのポート3000番で起動できました。

ブラウザからアクセスすると、
「Welcome to Express」
てな感じの表示がされました。