Node.js 教本の記述でエラー (req,res)
受付中
回答 0
投稿
- 評価
- クリップ 1
- VIEW 3,864
全くの初心者で、秀和システム刊「Node.js超入門」という本で、勉強の最中です。
Visual code studioを使って同書のサンプルを入力して勉強していますが、サンプル通りに入力しているつもりですがexpressが反応してくれません。
そのページまでのサンプルまでは入力ミスで考え込むことはありましたが、なんとか動いていますので、必要なモジュールはインストールできていると思います。
エラーメッセージは特に表示されませんが、テキストボックスが表示されず、Visual code studioのアラートで、
「'req'が宣言されていますが、その値が読み取られることはありません。(ts6133)」と表示されます。
var express = require('express');
var ejs = require("ejs");
var app = express();
app.engine('ejs', ejs.renderFile);
app.use(express.static('public'));
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({extended: false}));
//次の行の'req'についてエラーが表示されます。
app.get('/', (req, res) => {
var msg = 'This is Index page!<br>'
+ '※メッセージを書いて送信してください。';
res.render('index.ejs' ,
{
title: 'Index',
content: msg,
});
});
//※post送信の処理
app.post('/', (req, res) => {
var msg = 'This is Posted Page!' +
'あなたは「<b>' + req.body.message +
'</b>」と送信しました。';
res.render('index.ejs' ,
{
title: 'Posted',
content: msg,
});
});
var server = app.listen(3000, () => {
console.log('Start is running!');
})
node.js express
試したこと
package.jsonの確認。
本ファイルと関連ファイルのスペルチェック
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
まだ回答がついていません
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.09%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
質問への追記・修正の依頼
wwbQzhMkhhgEmhU
2019/03/03 02:42
書かれているコードは、なんていうファイル名で保存することになっているファイルなんでしょうか?
express.jsですよね?express.tsじゃないですよね?
sugi-bbs
2019/03/04 09:07
ありがとうございます。遅くなりました。
教本ではindex.jsとして保存しているファイルを上記のように書き換えることになっています。
そのindex.jsファイルと同じ階層にviewsディレクトリがあり、そのviewsディレクトリ内にindex.ejsとして下記のソースがあるという状態です。
-----------------------------------------
<!DOCUTYPE html>
<html lang="ja">
<head>
<meta http-ewiv="content-type"
content="text/html; charset=UTF-8">
<title><%=title %></title>
<link type="text/css" href="./style.css" rel="stylesheet">
</head>
<body>
<header>
<h1><%=title %></h1>
</header>
<div role="main">
<p><%-content %></p>
<form action="/" method="post">
<p><imput type="text" name="message">
<imput type="submit" value="送信"></p>
</form>
</div>
</body>
</html>
wwbQzhMkhhgEmhU
2019/03/04 09:12
では、今sugi-bbsさんがお使いの環境では、教本上index.jsとなっているファイルを正しくindex.jsというファイル名にしていますか?
sugi-bbs
2019/03/04 09:44
ありがとうございます。
はいindex.jsとなっています。
wwbQzhMkhhgEmhU
2019/03/04 09:48
だとすると、exporessサーバ起動時に
$ node.js index
と指定しそうなものなのですが。。。
同じフォルダにexporess.tsか、express.js、もしくはその両方がありませんか?
sugi-bbs
2019/03/04 10:02
index.jsと同じ階層のnode_moduleを起点として
node_module/express/lib/express.js
は存在しています。
.....でも何が何だかという状況です。本当に申し訳ないです
wwbQzhMkhhgEmhU
2019/03/04 10:13
う〜ん、状況がよく分かりません。これ以上聞いてみても把握できない可能性が高そうです。
とりあえず気になった点と私の判断を↓にまとめておきますので、ご自分で調べてみてください。
・Visual Studio code上の問題表示は、Type Scriptとして開いた場合のエラーメッセージに見える
・Type Scriptでは、メソッドの引数に対して、型を要求するので、それを要求されているエラーであり、私が使っているバージョンでもts613?なエラーが表示されていた
・上記からTypeScriptと判定されるファイル名で開いているのではないかと予想
・また、node起動時にもexpressと指定しているため、express.tsというファイル名なのではないかと予想
・しかしいずれも違うらしいので、現状では不明。npmのバージョンとその後のセットアップ操作も不明なので、ディレクトリごと違う可能性もあるが、構成自体の把握は本人が出来ていると言っている。
・→状況把握断念
sugi-bbs
2019/03/04 10:36
ありがとうございました。
wwbQzhMkhhgEmhUさんがまとめてくださった内容を、確認してみます。
何も分からずにとりあえず「超入門」という題名に惹かれてつまづきながら、勉強はじめましたもので、質問にすらならない質問におつきあい頂きありがとうございました。