Node.jsでWebサーバ

普段、Webサーバのテストを行うときはPythonのSimpleHTTPServerをよく使うのですがNode.jsでWebサーバが動けばそれで代用できるんじゃないかと思って調べた。

そしたら、やっぱりあるのね。

ソースコード

JavaScriptは次のように書いて、Node.jsで実行するとlocalhostの8080番ポートがlistenになるのでWebブラウザからhttp://localhost:8080/にアクセスするとよい。

// httpモジュールを読み込み、インスタンスを生成
var http    = require('http');
var fs      = require('fs');
var server  = http.createServer();

server.on('request', function(req, res) {
  res.writeHead(404, {'Content-Type' : 'text/plain'});
  res.write(req.url);
  res.end();
});

server.listen(8080, "127.0.0.1");

ファイルを表示

URLでファイルを表示する場合は次のように書く。

// httpモジュールを読み込み、インスタンスを生成
var http    = require('http');
var fs      = require('fs');
var server  = http.createServer();

server.on('request', function(req, res) {
  // ファイルを読み込むときはcallbackにする
  fs.readFile(__dirname + req.url, 'utf-8', function (err, data) {
    // エラー発生時
    if (err) {
      res.writeHead(404, {'Content-Type' : 'text/plain'});
      res.write('page not found');
      return res.end();
    }

    res.writeHead(200, {'Content-Type' : 'text/html'});
    res.write(data);
    res.end();
  });
});

server.listen(8080, "127.0.0.1");

これでhttp://localhost:8080/hello.htmlとかでアクセスすると、Node.jsを実行したディレクトリのhello.htmlを表示する。

write: 2020/08/15/ 16:18:18