質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.78%

node.js(Express)でのapp.js実行後、画面が白紙な件について

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 726

score 4

前提・実現したいこと

node.js(Express)で簡単な掲示板を作っています。 ※「Node.js 超入門 第二版-秀和システム」の第3章を参考にしています。

ejs、app.jsを作成後、サーバーを起動しましたがブラウザが白紙で表示されてしまいます。
コンソール上にエラーも出ていないので、はっきりとした原因がわかりません。

node.jsは全くの初心者な為、資料が不足しているかと思いますが
何かヒントなどを頂けたら嬉しいです・・・。

発生している問題・エラーメッセージ

```
エラーメッセージ
エラーメッセージ:無

該当のソースコード

[app.js ↓]

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 max_num = 10;
const filename = 'mydata.txt';
var message_data; //データ?
readFromFile(filename);

var server = http.createServer(getFromClient);

server.listen(3000);
console.log('Server start!');

// ここまでメインプログラム =============

// createServerの処理
function getFromClient(request, response) {

var url_parts = url.parse(request.url, true);
switch (url_parts.pathname) {

case '/': //トップページ
response_index(request, response);
break;

case '/login': //ログインページ
response_login(request, response);
break;

default:
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end('no_page...');
break;
}
}

//loginのアクセス処理
function response_login(request, response){
var content = ejs.render(login_page, {});
response.writeHead(200, {'Content-Type': 'text/html'});
response.write(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(request, 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(filename) {
fs.readFile(filename, 'utf8', (err, data) => {
message_data = data.split('\n');
})
}

//データを更新
function addToData(id, meg, filename, 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.length > max_num){
message_data.pop();
}
saveToFile(filename);
}

//データを保存
function saveToFile(filename) {
var data_str = message_data.join('\n');
fs.writeFile(filename, data_str, (err) => {
if (err) {throw err; }
});
}

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.78%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る