masalibの日記

システム開発、運用と猫の写真ブログです

ゼロから始めるexpress

node.jsではexpressというWEBサーバーが簡単に構築できます
またジェネレーターを使えばある程度自動的にソースも展開してくれます
だけど・・・理解を深めるためにゼロからexpressを使ってWEBサーバーを作りたいと思います

前提

・node.js(npm)の環境については以下の記事を参考にしてください
masalib.hatenablog.com


・root権限で作業をしています。rootではない場合はsudoコマンドで作業する形になります

プロジェクトのFolderを作成

cd /var/node/
mkdir xmlsampleapp
cd xmlsampleapp

package.jsonを作成する

cd /var/node/xmlsampleapp
npm init 

This utility will walk you through creating a package.json file.
It only covers the most common items, and tries to guess sensible defaults.

See `npm help json` for definitive documentation on these fields
and exactly what they do.

Use `npm install <pkg>` afterwards to install a package and
save it as a dependency in the package.json file.

Press ^C at any time to quit.
package name: (xmlsampleapp)
version: (1.0.0)
description: test
entry point: (index.js)
test command:
git repository:
keywords:
author: masalib
license: (ISC) MIT
About to write to /var/node/xmlsampleapp/package.json:

{
  "name": "xmlsampleapp",
  "version": "1.0.0",
  "description": "test",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "masalib",
  "license": "MIT"
}

initの所はサンプルプログラムなので適当に記述する
is this ok ?と聞かれるのエンターを押す

dependencies(依存)の設定をする

nodeのモジュールを一つ、一つインストールしてもいいのですが
めんどくさいので一気にいれてしましたと思います

vi /var/node/xmlsampleapp/package.json

//scriptの下に追加する
  "dependencies": {
    "body-parser": "~1.18.2",
    "cookie-parser": "~1.4.3",
    "debug": "~2.6.9",
    "express": "~4.15.5",
    "jade": "~1.11.0",
    "morgan": "~1.9.0",
    "pretty-data" : "latest",
    "serve-favicon": "~2.4.5"
  },
//latestは最新という意味です


保存後にモジュールのインストールをする

npm install

依存性があるものがインストールされる


mainがindex.jsになっているのでファイル作成する

vi /var/node/xmlsampleapp/index.js

console.log("hello,world")
//1行目に追加する

追加後にnode.jsが動くのか確認する

$ cd /var/node/xmlsampleapp/ && node index.js
hello,world

となる

hello,worldとコンソールログが表示されたのでnode.jsは動いている事が確認できた

expressを設定する

これだとwebサーバーとしては動かないのでindex.jsを修正する

$ vi /var/node/xmlsampleapp/index.js
var express = require('express');
var app = express();

app.get('/', function(req, res){
  res.send('hello world express');
});

//3000は既につかっているので3001
app.listen(3001);


ブラウザでアクセスすると表示されています
f:id:masalib:20180221190423p:plain

修正時にexpressを自動ロードする

ちなみにプログラムを修正してリロードしても反映されません
プログラム監視してくれるモジュールをインストールしたいと思います

qiita.com

$ npm install -g nodemon

起動は簡単でnodeになっている部分をnodemonにするだけです

nodemon index.js
[nodemon] 1.15.1
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node index.js`
[nodemon] restarting due to changes...
[nodemon] starting `node index.js`
 hello world access

これで修正時に自動的にリロードされるようになった

はじめてのNode.js -サーバーサイドJavaScriptでWebアプリを開発する-

はじめてのNode.js -サーバーサイドJavaScriptでWebアプリを開発する-