node.jsとexpressのexpress.staticについて
node.jsとexpressを用いたサーバ構築についてわからないことがあったので質問します。
質問内容は
app.use(express.static(__dirname));
と
app.get('/', function(req, res){});
の記述順番によって意図しない結果が返ってくるというものです。
質問:
パターン1の位置にexpress.staticを記述し、http://localhost:3000にアクセスすると、index.htmlの内容が表示されるのはなぜでしょうか?
また、htmlのファイル名がindex.htmlの時にだけこの現象が起こるのですがなぜでしょうか?
想定している動き:
app.getではtestpage.html(存在しないhtml)を返すと記述しているので、localhost:3000にアクセスするとError: ENOENTとなるはずでは?
備考:
普段はパターン2の位置にexperss.staticを記述していました。2の位置にexpress.staticを記述しlocalhost:3000にアクセスするとError: ENOENTとなります(想定通り)
認識している点:
app.use(express.static(__dirname + '/public'));
指定したディレクトリ以下の静的ファイルを公開する
app.get('/', function(req, res){});
引数で指定されたGETリクエストに対して処理を行う。今回の質問の場合指定したhtmlファイルを返す。
以下サンプルを示します。
ディレクトリ構成
app
├package.json
├app.js
├node_modules
│ └express
└public
└index.html
app.js
var express = require('express');
var app = express();
var http = require('http').Server(app);
//パターン1
app.use(express.static(__dirname + '/public'));
app.get('/', function(req, res){
res.sendFile(__dirname + '/public/testpage.html');
});
//パターン2
//app.use(express.static(__dirname + '/public'));
http.listen(3000, function(){
console.log('Web Server listening on *:3000');
});
index.html
<!doctype html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>testpage</title>
</head>
<body>
<h1>Test Page</h1>
</body>
</html>
基本的なことで恐縮ですが教えていただけるとありがたいです。