node.jsのフレームワーク、expressのインストールを行います。
基本的にnpmを叩くだけで入ります。通常のパッケージ管理ソフトと同様にnpmが依存関係にあるインストールされていないライブラリも自動的に取得してくれます。
npm install -g express
expressの本体をインストールします。
$ sudo npm install -g express npm http GET https://registry.npmjs.org/express npm http 304 https://registry.npmjs.org/express npm http GET https://registry.npmjs.org/accepts npm http GET https://registry.npmjs.org/buffer-crc32/0.2.3 npm http GET https://registry.npmjs.org/debug/1.0.4 npm http GET https://registry.npmjs.org/depd/0.4.4 npm http GET https://registry.npmjs.org/escape-html/1.0.1 npm http GET https://registry.npmjs.org/finalhandler/0.1.0 npm http GET https://registry.npmjs.org/media-typer/0.2.0 npm http GET https://registry.npmjs.org/methods/1.1.0 npm http GET https://registry.npmjs.org/parseurl npm http GET https://registry.npmjs.org/path-to-regexp/0.1.3 npm http GET https://registry.npmjs.org/proxy-addr/1.0.1 npm http GET https://registry.npmjs.org/qs/1.2.2 npm http GET https://registry.npmjs.org/range-parser/1.0.0 npm http GET https://registry.npmjs.org/send/0.8.3 npm http GET https://registry.npmjs.org/serve-static npm http GET https://registry.npmjs.org/type-is npm http GET https://registry.npmjs.org/vary/0.1.0 npm http GET https://registry.npmjs.org/cookie/0.1.2 npm http GET https://registry.npmjs.org/fresh/0.2.2 npm http GET https://registry.npmjs.org/cookie-signature/1.0.4 npm http GET https://registry.npmjs.org/merge-descriptors/0.0.2 npm http GET https://registry.npmjs.org/utils-merge/1.0.0 npm http 200 https://registry.npmjs.org/accepts npm http 200 https://registry.npmjs.org/parseurl npm http GET https://registry.npmjs.org/parseurl/-/parseurl-1.3.0.tgz npm http 200 https://registry.npmjs.org/serve-static npm http 200 https://registry.npmjs.org/type-is npm http GET https://registry.npmjs.org/accepts/-/accepts-1.0.7.tgz npm http GET https://registry.npmjs.org/serve-static/-/serve-static-1.5.3.tgz npm http GET https://registry.npmjs.org/type-is/-/type-is-1.3.2.tgz npm http 200 https://registry.npmjs.org/parseurl/-/parseurl-1.3.0.tgz npm http 200 https://registry.npmjs.org/accepts/-/accepts-1.0.7.tgz npm http 200 https://registry.npmjs.org/serve-static/-/serve-static-1.5.3.tgz npm http 200 https://registry.npmjs.org/type-is/-/type-is-1.3.2.tgz npm http 200 https://registry.npmjs.org/proxy-addr/1.0.1 npm http 200 https://registry.npmjs.org/methods/1.1.0 npm http 200 https://registry.npmjs.org/buffer-crc32/0.2.3 npm http 200 https://registry.npmjs.org/finalhandler/0.1.0 npm http 200 https://registry.npmjs.org/cookie-signature/1.0.4 npm http 200 https://registry.npmjs.org/escape-html/1.0.1 npm http 200 https://registry.npmjs.org/send/0.8.3 npm http GET https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.1.tgz npm http GET https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.3.tgz npm http GET https://registry.npmjs.org/finalhandler/-/finalhandler-0.1.0.tgz npm http GET https://registry.npmjs.org/methods/-/methods-1.1.0.tgz npm http 200 https://registry.npmjs.org/path-to-regexp/0.1.3 npm http GET https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.4.tgz npm http 200 https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.3.tgz npm http GET https://registry.npmjs.org/escape-html/-/escape-html-1.0.1.tgz npm http 200 https://registry.npmjs.org/proxy-addr/-/proxy-addr-1.0.1.tgz npm http 200 https://registry.npmjs.org/methods/-/methods-1.1.0.tgz npm http GET https://registry.npmjs.org/send/-/send-0.8.3.tgz npm http 200 https://registry.npmjs.org/finalhandler/-/finalhandler-0.1.0.tgz npm http 200 https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.4.tgz npm http GET https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.3.tgz npm http 200 https://registry.npmjs.org/escape-html/-/escape-html-1.0.1.tgz npm http 200 https://registry.npmjs.org/send/-/send-0.8.3.tgz npm http 200 https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.3.tgz npm http 200 https://registry.npmjs.org/qs/1.2.2 npm http 200 https://registry.npmjs.org/cookie/0.1.2 npm http GET https://registry.npmjs.org/qs/-/qs-1.2.2.tgz npm http 200 https://registry.npmjs.org/debug/1.0.4 npm http 200 https://registry.npmjs.org/merge-descriptors/0.0.2 npm http 200 https://registry.npmjs.org/media-typer/0.2.0 npm http 200 https://registry.npmjs.org/utils-merge/1.0.0 npm http GET https://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz npm http 200 https://registry.npmjs.org/qs/-/qs-1.2.2.tgz npm http GET https://registry.npmjs.org/debug/-/debug-1.0.4.tgz npm http GET https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-0.0.2.tgz npm http GET https://registry.npmjs.org/media-typer/-/media-typer-0.2.0.tgz npm http GET https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz npm http 200 https://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz npm http 200 https://registry.npmjs.org/debug/-/debug-1.0.4.tgz npm http 200 https://registry.npmjs.org/media-typer/-/media-typer-0.2.0.tgz npm http 200 https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-0.0.2.tgz npm http 200 https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.0.tgz npm http 200 https://registry.npmjs.org/depd/0.4.4 npm http GET https://registry.npmjs.org/depd/-/depd-0.4.4.tgz npm http 200 https://registry.npmjs.org/fresh/0.2.2 npm http 200 https://registry.npmjs.org/vary/0.1.0 npm http 200 https://registry.npmjs.org/range-parser/1.0.0 npm http 200 https://registry.npmjs.org/depd/-/depd-0.4.4.tgz npm http GET https://registry.npmjs.org/vary/-/vary-0.1.0.tgz npm http GET https://registry.npmjs.org/fresh/-/fresh-0.2.2.tgz npm http GET https://registry.npmjs.org/range-parser/-/range-parser-1.0.0.tgz npm http 200 https://registry.npmjs.org/vary/-/vary-0.1.0.tgz npm http 200 https://registry.npmjs.org/fresh/-/fresh-0.2.2.tgz npm http 200 https://registry.npmjs.org/range-parser/-/range-parser-1.0.0.tgz npm http GET https://registry.npmjs.org/mime-types npm http GET https://registry.npmjs.org/negotiator/0.4.7 npm http GET https://registry.npmjs.org/mime-types npm http GET https://registry.npmjs.org/ipaddr.js/0.1.2 npm http 200 https://registry.npmjs.org/mime-types npm http 200 https://registry.npmjs.org/mime-types npm http GET https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz npm http GET https://registry.npmjs.org/destroy/1.0.3 npm http GET https://registry.npmjs.org/mime/1.2.11 npm http GET https://registry.npmjs.org/ms/0.6.2 npm http GET https://registry.npmjs.org/on-finished/2.1.0 npm http 200 https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz npm http 200 https://registry.npmjs.org/ms/0.6.2 npm http GET https://registry.npmjs.org/ms/-/ms-0.6.2.tgz npm http 200 https://registry.npmjs.org/ms/-/ms-0.6.2.tgz npm http 200 https://registry.npmjs.org/ipaddr.js/0.1.2 npm http GET https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-0.1.2.tgz npm http 200 https://registry.npmjs.org/negotiator/0.4.7 npm http GET https://registry.npmjs.org/negotiator/-/negotiator-0.4.7.tgz npm http 200 https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-0.1.2.tgz npm http 200 https://registry.npmjs.org/on-finished/2.1.0 npm http GET https://registry.npmjs.org/on-finished/-/on-finished-2.1.0.tgz npm http 200 https://registry.npmjs.org/negotiator/-/negotiator-0.4.7.tgz npm http 200 https://registry.npmjs.org/on-finished/-/on-finished-2.1.0.tgz npm http 200 https://registry.npmjs.org/destroy/1.0.3 npm http GET https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz npm http 200 https://registry.npmjs.org/destroy/-/destroy-1.0.3.tgz npm http 200 https://registry.npmjs.org/mime/1.2.11 npm http GET https://registry.npmjs.org/mime/-/mime-1.2.11.tgz npm http 200 https://registry.npmjs.org/mime/-/mime-1.2.11.tgz npm http GET https://registry.npmjs.org/ee-first/1.0.5 npm http 200 https://registry.npmjs.org/ee-first/1.0.5 npm http GET https://registry.npmjs.org/ee-first/-/ee-first-1.0.5.tgz npm http 200 https://registry.npmjs.org/ee-first/-/ee-first-1.0.5.tgz express@4.8.5 /usr/local/lib/node_modules/express ├── merge-descriptors@0.0.2 ├── utils-merge@1.0.0 ├── cookie@0.1.2 ├── escape-html@1.0.1 ├── cookie-signature@1.0.4 ├── finalhandler@0.1.0 ├── fresh@0.2.2 ├── vary@0.1.0 ├── range-parser@1.0.0 ├── media-typer@0.2.0 ├── parseurl@1.3.0 ├── methods@1.1.0 ├── serve-static@1.5.3 ├── buffer-crc32@0.2.3 ├── path-to-regexp@0.1.3 ├── depd@0.4.4 ├── qs@1.2.2 ├── debug@1.0.4 (ms@0.6.2) ├── type-is@1.3.2 (mime-types@1.0.2) ├── proxy-addr@1.0.1 (ipaddr.js@0.1.2) ├── accepts@1.0.7 (negotiator@0.4.7, mime-types@1.0.2) └── send@0.8.3 (destroy@1.0.3, ms@0.6.2, mime@1.2.11, on-finished@2.1.0)
npm install -g express-generator
expressコマンドが使えるようにします。
expressコマンドはアプリケーションのひな形を自動生成してくれる物。
$ sudo npm install -g express-generator Password: npm http GET https://registry.npmjs.org/express-generator npm http 200 https://registry.npmjs.org/express-generator npm http GET https://registry.npmjs.org/express-generator/-/express-generator-4.2.0.tgz npm http 200 https://registry.npmjs.org/express-generator/-/express-generator-4.2.0.tgz npm http GET https://registry.npmjs.org/commander/1.3.2 npm http GET https://registry.npmjs.org/mkdirp/0.3.5 npm http 200 https://registry.npmjs.org/mkdirp/0.3.5 npm http GET https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz npm http 200 https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.5.tgz npm http 200 https://registry.npmjs.org/commander/1.3.2 npm http GET https://registry.npmjs.org/commander/-/commander-1.3.2.tgz npm http 200 https://registry.npmjs.org/commander/-/commander-1.3.2.tgz npm http GET https://registry.npmjs.org/keypress npm http 200 https://registry.npmjs.org/keypress npm http GET https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz npm http 200 https://registry.npmjs.org/keypress/-/keypress-0.1.0.tgz /usr/local/bin/express -> /usr/local/lib/node_modules/express-generator/bin/express express-generator@4.2.0 /usr/local/lib/node_modules/express-generator ├── mkdirp@0.3.5 └── commander@1.3.2 (keypress@0.1.0)
アプリの作成テスト
expressコマンドにアプリ名を指定するだけでサクッとひな形を作成してくれます。
$ express test create : test create : test/package.json create : test/app.js create : test/public create : test/public/images create : test/public/stylesheets create : test/public/stylesheets/style.css create : test/public/javascripts create : test/routes create : test/routes/index.js create : test/routes/users.js create : test/views create : test/views/index.jade create : test/views/layout.jade create : test/views/error.jade create : test/bin create : test/bin/www install dependencies: $ cd test && npm install run the app: $ DEBUG=test ./bin/www
依存関係にあるライブラリをインストールします。
expressが生成したpackage.jsonに必要とするライブラリ一覧が書かれているのですが、npmコマンドがそれを見て必要な物を自動で入れてくれます。
$ cd test $ npm install -d
nodeを起動して様子を見ます。 特にエラーなどでなければOK。
$ node app.js
ブラウザからの確認
とりあえずサクッと動作確認がしてしまいたい場合、app.jsの下の方に以下のようなコードを付け足して、
app.listen(3000);
node.jsを起動し、ブラウザから localhost:3000 へアクセスすると簡単なページが表示されるようになります。アクセスがあるとそのログがターミナル上にも表示され確認できます。
$ node app.js GET / 200 321ms - 170b GET /stylesheets/style.css 200 22ms - 110b
終了するときはCtrl+cあたりで適当に。