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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

Q&A

0回答

4722閲覧

Node.js 教本の記述でエラー (req,res)

sugi-bbs

総合スコア10

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

0グッド

1クリップ

投稿2019/03/02 03:21

全くの初心者で、秀和システム刊「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/ツールのバージョンなど)

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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

wwbQzhMkhhgEmhU

2019/03/02 17:42

書かれているコードは、なんていうファイル名で保存することになっているファイルなんでしょうか? express.jsですよね?express.tsじゃないですよね?
sugi-bbs

2019/03/04 00: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 00:12

では、今sugi-bbsさんがお使いの環境では、教本上index.jsとなっているファイルを正しくindex.jsというファイル名にしていますか?
sugi-bbs

2019/03/04 00:44

ありがとうございます。 はいindex.jsとなっています。
wwbQzhMkhhgEmhU

2019/03/04 00:48

だとすると、exporessサーバ起動時に $ node.js index と指定しそうなものなのですが。。。 同じフォルダにexporess.tsか、express.js、もしくはその両方がありませんか?
sugi-bbs

2019/03/04 01:02

index.jsと同じ階層のnode_moduleを起点として node_module/express/lib/express.js は存在しています。 .....でも何が何だかという状況です。本当に申し訳ないです
wwbQzhMkhhgEmhU

2019/03/04 01:13

う〜ん、状況がよく分かりません。これ以上聞いてみても把握できない可能性が高そうです。 とりあえず気になった点と私の判断を↓にまとめておきますので、ご自分で調べてみてください。 ・Visual Studio code上の問題表示は、Type Scriptとして開いた場合のエラーメッセージに見える ・Type Scriptでは、メソッドの引数に対して、型を要求するので、それを要求されているエラーであり、私が使っているバージョンでもts613?なエラーが表示されていた ・上記からTypeScriptと判定されるファイル名で開いているのではないかと予想 ・また、node起動時にもexpressと指定しているため、express.tsというファイル名なのではないかと予想 ・しかしいずれも違うらしいので、現状では不明。npmのバージョンとその後のセットアップ操作も不明なので、ディレクトリごと違う可能性もあるが、構成自体の把握は本人が出来ていると言っている。 ・→状況把握断念
sugi-bbs

2019/03/04 01:36

ありがとうございました。 wwbQzhMkhhgEmhUさんがまとめてくださった内容を、確認してみます。 何も分からずにとりあえず「超入門」という題名に惹かれてつまづきながら、勉強はじめましたもので、質問にすらならない質問におつきあい頂きありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問