From 217c880305105538cea04f0834eadde9cc53dbc7 Mon Sep 17 00:00:00 2001 From: yuto0214w Date: Mon, 8 Nov 2021 12:14:01 +0900 Subject: Sync codes on node_server_without_framework --- .../node_server_without_framework/index.html | 28 +++++++++++++++------- 1 file changed, 20 insertions(+), 8 deletions(-) (limited to 'files/ja/learn') diff --git a/files/ja/learn/server-side/node_server_without_framework/index.html b/files/ja/learn/server-side/node_server_without_framework/index.html index a59228be80..13d633d616 100644 --- a/files/ja/learn/server-side/node_server_without_framework/index.html +++ b/files/ja/learn/server-side/node_server_without_framework/index.html @@ -43,20 +43,21 @@ http.createServer(function (request, response) { var extname = String(path.extname(filePath)).toLowerCase(); var mimeTypes = { -  '.html': 'text/html', + '.html': 'text/html', '.js': 'text/javascript', '.css': 'text/css', '.json': 'application/json', '.png': 'image/png', '.jpg': 'image/jpg', '.gif': 'image/gif', + '.svg': 'image/svg+xml', '.wav': 'audio/wav', '.mp4': 'video/mp4', '.woff': 'application/font-woff', '.ttf': 'application/font-ttf', '.eot': 'application/vnd.ms-fontobject', '.otf': 'application/font-otf', - '.svg': 'application/image/svg+xml' + '.wasm': 'application/wasm' }; var contentType = mimeTypes[extname] || 'application/octet-stream'; @@ -72,7 +73,6 @@ http.createServer(function (request, response) { else { response.writeHead(500); response.end('Sorry, check with the site admin for error: '+error.code+' ..\n'); - response.end(); } } else { @@ -98,11 +98,13 @@ var path = require('path');
http.createServer(function (request, response) {
     ...
 }).listen(8125);
+console.log('Server running at http://127.0.0.1:8125/');
 

次の4行では、要求があったURLから、ファイルへのパスを決定します。ファイル名が明示されていないときは、デフォルト名を使うようにします。

-
var filePath = '.' + request.url;
+
console.log('request ', request.url);
+var filePath = '.' + request.url;
 if (filePath == './') {
     filePath = './index.html';
 }
@@ -112,7 +114,8 @@ if (filePath == './') {
 
 

次に、要求されたファイルの拡張子を調べ、以下に定義するMIMEタイプのどれかと一致したら、そのタイプを使います。一致しない場合には、デフォルトのタイプapplication/octet-streamを使うようにします。.

-
var mimeTypes = {
+
var extname = String(path.extname(filePath)).toLowerCase();
+var mimeTypes = {
     '.html': 'text/html',
     '.js': 'text/javascript',
     '.css': 'text/css',
@@ -120,13 +123,14 @@ if (filePath == './') {
     '.png': 'image/png',
     '.jpg': 'image/jpg',
     '.gif': 'image/gif',
+    '.svg': 'image/svg+xml',
     '.wav': 'audio/wav',
     '.mp4': 'video/mp4',
     '.woff': 'application/font-woff',
     '.ttf': 'application/font-ttf',
     '.eot': 'application/vnd.ms-fontobject',
     '.otf': 'application/font-otf',
-    '.svg': 'application/image/svg+xml'
+    '.wasm': 'application/wasm'
 };
 
 var contentType = mimeTypes[extname] || 'application/octet-stream';
@@ -139,7 +143,16 @@ var contentType = mimeTypes[extname] || 'application/octet-stream';
 });
 
-

関数のなかで最初にやることは、起こりうるエラーへの対応です。一番多いのは、存在しないファイルを要求された場合(ENOENT)で、エラーコード404に対応するページを返してやります。

+

関数のなかで最初にやることは、起こりうるエラーへの対応です。

+ +
if (error) {
+  ..
+} else {
+  ..
+}
+
+ +

一番多いのは、存在しないファイルを要求された場合(ENOENT)で、エラーコード404に対応するページを返してやります。

if(error.code == 'ENOENT') {
     fs.readFile('./404.html', function(error, content) {
@@ -150,7 +163,6 @@ var contentType = mimeTypes[extname] || 'application/octet-stream';
 else {
     response.writeHead(500);
     response.end('Sorry, check with the site admin for error: '+error.code+' ..\n');
-    response.end();
 }

何もエラーが検出されなかったら、MIME型をヘッダーに付けて、要求されたファイルを返してやります。

-- cgit v1.2.3-54-g00ecf