夜遅くに失礼します。時間が経ってしまったのですが、前回の質問を参考にし、プログラムを書き換えて実行できないかためしてみようと思ったものの、上手く動くどころかmiyabi-sunさんに教えてもらったexpressを活用したやり方をやってみようとするとそもそも起動しなくなるという状況になってしまい、泣く泣く前回つかっていたhttpなどを使って起動を試みてみたものの、ただ文字化けた文字が表示されるだけで何も読み込めない、という状況になってしまいました。今のコードはこんな感じになっています。
const http = require('http'); const fs = require('fs'); const url = require('url'); const port = 3000; const server = http.createServer(RouteSetting); server.listen(port, () => { console.log(`Server listening on ${port}`); }); //const express = require("express"); //const app = express(); //app.use(express.static(`${__dirname}/public`)); //app.listen(3000); function getType(_url) { var types = { '.html': 'text/html', '.css': 'text/css', '.js': 'text/javascript', '.png': 'image/png', ".jpg": "image/jpeg" } for (var key in types) { if (_url.parse(key)) { return types[key]; } } return 'text/plain'; } function RouteSetting(req, res) { const url_parts = url.parse(req.url); const path = url_parts.pathname === '/' ? `${__dirname}/index_gest.html` : `${__dirname}/${url_parts.pathname}`; if (fs.existsSync(path)) { fs.readFile(path, (err, file) => { if (err) { // errになるということはパーミッション等の問題で読み取れない重篤なエラーになっている console.error(err); res.writeHead(500, {'Content-Type': getType(url)}); res.end('ファイルを読み込む事ができませんでした'); return; } res.writeHead(200, {'Content-Type': getType(url)}); res.end(file); }); return; } // 最後まで適したページがなければ404を返して終わる res.writeHead(404, {'Content-Type': 'text/plain'}); res.end('お探しのページは見つかりません。'); }
文字化けのページはこうなっています。
そもそも元のプログラムだとfsをconstで指定していたり(追加すればいいだけなのかもしれないと勝手に思っています)、クソだと言っていたhttpでcreateServer(RouteSetting)と書いていたからRouteSettingは反応していたと思うのでexpressを利用した場合でのpublicにhtmlやcssを入れるときプログラムを使おうとしてみると当然反応しないわけで修正しようにも何も分からない状態のまんまなため困り果ててしまっています。ちなみにvscode studio codeのターミナルから今回のjsファイルをnode ~~~と打って起動しようと
しているのですがこれも何か関係があったりするのでしょうか?
前回の質問を何度読んでも打開策が見つからず、もう一度お話をお聞きしたくて書きました。ご迷惑をおかけしますが、よろしくお願いいたします。何か掲示してほしいというものがあったら教えてください。教えてもらう立場になるからには情報源が足りなくて答えられないということになってしまうと申し訳ないので、、、
回答1件
あなたの回答
tips
プレビュー