前提・実現したいこと
Node.jsを学ぼうと思い、サンプルコードを真似て、簡単なチャットシステムを作ろうとしています
まだ初期段階で、サーバーからの返答をブラウザで表示しようとしています。
プログラム自体は問題なく動いているようですが、非常に不便なことが発生したので、質問します。
発生している問題
ローカルでサーバーを起動し、
ブラウザからアクセスしたときに、
サーバーからの応答の内容をそのまま表示したいのですが
サーバーからの応答がブラウザで【ダウンロード】されてしまいます。
該当のソースコード
javascript
1//setting.js 2exports.port = 1337; 3exports.host = "127.0.0.1";
javascript
1//server.js 2var http = require('http'); 3 fs = require('fs'); 4 ejs = require('ejs'); 5 qs = require('querystring'); 6var settings = require('./setting'); 7var server = http.createServer(); 8var template = fs.readFileSync("public_html/bbs.ejs","utf-8"); 9var posts = []; 10function renderForm(posts, res){ 11 var data = ejs.render(template,{ 12 posts: posts 13 }); 14 res.writeHead(200,{'Content-Type': 'test/html'}) 15 res.write(data); 16 res.end(); 17 console.log("request!!!!"); 18} 19server.on('request',function(req, res){ 20 console.log("request!!!!"); 21 if(req.method === 'POST'){ 22 console.log("request!!!!"); 23 req.data = ""; 24 req.on("readable", function(){ 25 req.data += req.read(); 26 }); 27 req.on("end", function(){ 28 var query = qs.parse(req.data); 29 posts.push(query.name); 30 renderForm(posts,res); 31 }); 32 }else{ 33 renderForm(posts, res); 34 } 35}); 36 37server.listen(settings.port, settings.host); 38console.log("server listening");
javascript
1//public_html/bbs.ejs 2<!DOCTYPE html> 3<html lang="ja"> 4 <head> 5 <meta charset="utf-8"> 6 <title>BBS</title> 7 </head> 8 <body> 9 <form method="POST"> 10 <input type="text" name= "name"> 11 <input type="submit" value="Post!"> 12 <ul> 13 <% for (var i = 0; i < posts.length; i++){ %> 14 <li><%= posts[i] %></li> 15 <% } %> 16 </ul> 17 </form> 18 </body> 19</html>
試したこと
chrome,firefox,IEでアクセスしてみましたが全てうまくいきませんでした。
chrome,firefoxではダウンロードされ、IEでは【ダウンロードディレクトリにアクセスできませんでした。】と表示されました。
補足情報(FW/ツールのバージョンなど)
環境は
windows10 64bit
node -v //// v12.16.3
npm -v //// 6.14.4
です。
調べても同じような例が出てこなかったので、かなり基本的なところなのかと思いますが、教えてくれると嬉しいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/25 09:56