「ExpressによるHello World」の版間の差分

提供: Node.js/JavaScript入門
移動: 案内検索
(ページの作成:「ここでは、ExpressでHello Worldを作成します。 __TOC__ == 概要 == == ひな形の生成 == <syntaxhighlight lang="bash"> $ express -t ejs helloapp ...」)
(相違点なし)

2014年4月5日 (土) 21:53時点における版

ここでは、ExpressでHello Worldを作成します。

概要

ひな形の生成

$ express -t ejs helloapp
 
   create : helloapp
   create : helloapp/package.json
   create : helloapp/app.js
   create : helloapp/public
   create : helloapp/public/images
   create : helloapp/public/stylesheets
   create : helloapp/public/stylesheets/style.css
   create : helloapp/public/javascripts
   create : helloapp/routes
   create : helloapp/routes/index.js
   create : helloapp/routes/user.js
   create : helloapp/views
   create : helloapp/views/layout.jade
   create : helloapp/views/index.jade
 
   install dependencies:
     $ cd helloapp && npm install
 
   run the app:
     $ node app

以下のファイル、ディレクトリが作成されます。

$ ls -1
app.js
package.json
public/
routes/
views/
$ find .
.
./public
./public/images
./public/stylesheets
./public/stylesheets/style.css
./public/javascripts
./routes
./routes/index.js
./routes/user.js
./views
./views/layout.jade
./views/index.jade
./package.json
./app.js

インストール

$ cd helloapp
$ sudo npm install -g

実行

3000ポートでlistenします。

$ export NODE_PATH=/usr/local/lib/node_modules
$ node app.js
Express server listening on port 3000

アクセスすると簡単なログが出ます。

$ node app.js
Express server listening on port 3000
GET / 200 513ms - 170b
GET / 200 50ms - 170b
GET / 200 22ms - 170b
GET / 200 15ms - 170b
GET / 200 21ms - 170b
GET / 200 20ms - 170b
GET / 200 16ms - 170b
GET / 200 19ms - 170b
GET / 200 13ms - 170b

簡単なHTMLが返ってきます。

$ curl http://localhost:3000/
<!DOCTYPE html>Express

Express

Welcome to Express

viewを書き換える

view/index.jade が indexページのテンプレートです。

extends layout

block content
  h1= title
  p Welcome to #{title}

それでは、Welcomeな部分を書き換えます。

extends layout

block content
  h1= title
  p Hello world, #{title}

実行例

これで、Hello World

$ node app.js

エラー

NODE_PATHの設定を忘れている場合

環境変数 NODE_PATH が設定されてない場合に、以下のエラーがでます。

$ node app.js
 
module.js:340
    throw err;
          ^
Error: Cannot find module 'express'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (/tmp/helloapp/app.js:6:15)
    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)

jadeをインストールし忘れている場合

Express server listening on port 3000
Error: Cannot find module 'jade'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at new View (/usr/local/lib/node_modules/express/lib/view.js:43:49)
    at Function.app.render (/usr/local/lib/node_modules/express/lib/application.js:486:12)
    at ServerResponse.res.render (/usr/local/lib/node_modules/express/lib/response.js:798:7)
    at exports.index (/tmp/helloapp/routes/index.js:7:7)
    at callbacks (/usr/local/lib/node_modules/express/lib/router/index.js:164:37)
    at param (/usr/local/lib/node_modules/express/lib/router/index.js:138:11)
GET / 500 25ms

関連項目