現在Node.jsの勉強をしており、教材のサンプルコードを入力したところ、エラーが出てしまいます。
ejsも導入済みですし、何も問題ないかと思われます。
ejs側のソースコード
<!DOCTYPE html> <html lang="ja"> <head> <meta hyttp-equiv="content-type" content="text/html; charset=UTF-8"> <title>ミニ掲示板</title> <link type="text/css" href="./style.css" rel="stylesheet"> <script> function init(){ var id = localStorage.getItem('id'); if(id == null){ location.href ='./login'; } document.querySelector('#id').textContent = 'ID:' + id; document.querySelector('#id_input').value = id; } </script> </head> <body onload="init();"> <head> <h1>掲示板</h1> </head> <div role = "main"> <p>※メッセージは最大10個まで保管されます</p> <form method="post" action="/"> <p><span id="id"></span> <input type="hidden" id="id_input" name="id" value=""></p> <p><input type="text" name="msg"> <input type="submit" value="送信"></p> </form> <hr> <p><table style="width:85%;"> <% for(var i in data) { %> <%- include('data_item',{val:data[i]}) %> <% } %> </table></p> </div> </body> </html>
const http = require('http'); const fs = require('fs'); const ejs = require('ejs'); const url = require('url'); const qs = require('querystring'); const index_page = fs.readFileSync('./index.ejs', 'utf8'); const login_page = fs.readFileSync('./login.ejs', 'utf8'); const style_css = fs.readFileSync('./style.css', 'utf8'); const max_num = 10; const filename = 'mydata.txt'; // データファイル名 var message_data; // データ readFromFile(filename); var server = http.createServer(getFromClient); server.listen(3000); console.log('ほないこけ'); // ここまでメインプログラム // createServerの処理 function getFromClient(requset,response){ var url_parts = url.parse(requset.url,true); switch(url_parts.pathname){ case '/': response_index(requset.response); break; case '/login': response_login(requset.response); break; case '/style.css': response.writeHead(200 ,{'Content-Type': 'text/css'}); response.write(style_css); response.end(); break; default: response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('no.page....'); break; } } // Loginのアクセス処理 function response_login(requset,response){ var content = ejs.render(login_page,{}); response.writeHead(200, {'Content-Type': text/html}); response.weite(content); response.end(); } // indexのアクセス処理 function response_index(request,response){ // Post 処理 if(request.method == 'POST'){ var body = ''; request.on('data',function(data){ body += data; }); // データ受信終了のイベントを処理 request.on('end',function(){ data = qs.parse(body); addToData(data.id, data.msg, filename,request); //? write_index(request,response); }); }else{ write_index(request,response); } } // indexのページ作成 function write_index(requset,response){ var msg = "※何かコメントを書いてください"; var content = ejs.render(index_page,{ title:'Index', content:msg, data:message_data, filename:'data_item', }); response.writeHead(200, {'Content-type':'text/html'}); response.write(content); response.end(); } //テキストファイルをロード function readFromFile(fname){ fs.readFile(fname, 'utf8',(err,data)=>{ message_data = data.split('/n'); }) } //データを更新 function addToData(id,msg,fname,request){ var obj = {'id':id,'msg':msg}; var obj_str = JSON.stringify(obj); console.log('add data:' + obj_str); message_data.unshift(obj_str); if(message_data.lenght > max_num){ message_data.pop(); } saveToFile(fname); } //データ保存 function saveToFile(fname){ var data_str = message_data.join('/n'); fs.writeFile(fname, data_str,(err)=>{ if(err){throw err;} }); }
エラーコード
PS C:\Users***name***\Desktop\作品\mini_board> node app.js ほないこけ C:\Users***name***\Desktop\作品\mini_board\app.js:59 if(request.method == 'post'){ ^ TypeError: Cannot read property 'method' of undefined at response_index (C:\Users***name***\Desktop\作品\mini_board\app.js:59:16) at Server.getFromClient (C:\Users***name***\Desktop\作品\mini_board\app.js:28:13) at emitTwo (events.js:126:13) at Server.emit (events.js:214:7) at parserOnIncoming (_http_server.js:619:12) at HTTPParser.parserOnHeadersComplete (_http_common.js:112:17)
とでます。
エラーコードを読んでみると
TypeError: Cannot read property 'method' of undefined
と表示されていて、ejs側のinput部分も確認し、問題ないかとおもいます。
簡単なご説明になりましたが、よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー