回答編集履歴

2

ExpressGeneratorだったので修正

2018/11/14 10:11

投稿

rururu3
rururu3

スコア5545

test CHANGED
@@ -1,48 +1,110 @@
1
- ExpressでPOSTはbody-parser使わないといけなかったはず
1
+ express express-test --view=ejs
2
+
2
-
3
+ でインストールして
3
-
4
-
4
+
5
- https://github.com/expressjs/body-parser
5
+ cd express-test
6
+
6
-
7
+ npm install
7
-
8
-
8
+
9
+
10
+
9
- index.js
11
+ app.js
10
-
12
+
11
- ```JavaScript
13
+ ```js
14
+
12
-
15
+ var createError = require('http-errors');
16
+
13
- var express = require("express");
17
+ var express = require('express');
18
+
19
+ var path = require('path');
20
+
21
+ var cookieParser = require('cookie-parser');
22
+
23
+ var logger = require('morgan');
24
+
25
+
26
+
27
+ var indexRouter = require('./routes/index');
28
+
29
+ var usersRouter = require('./routes/users');
30
+
31
+ var helloRouter = require('./routes/hello');
32
+
33
+
14
34
 
15
35
  var app = express();
16
36
 
37
+
38
+
39
+ // view engine setup
40
+
41
+ app.set('views', path.join(__dirname, 'views'));
42
+
17
- var bodyParser = require('body-parser')
43
+ app.set('view engine', 'ejs');
44
+
45
+
46
+
18
-
47
+ app.use(logger('dev'));
48
+
19
-
49
+ app.use(express.json());
20
-
50
+
21
- app.use(bodyParser.urlencoded({ extended: false }))
51
+ app.use(express.urlencoded({ extended: false }));
22
-
23
-
24
-
52
+
25
- // staticメソッドを利用し、指定ディレクトリ以下の静的ファイルを読み込む
53
+ app.use(cookieParser());
26
-
54
+
27
- app.use("/public", express.static(__dirname + "/public"));
55
+ app.use(express.static(path.join(__dirname, 'public')));
56
+
57
+
58
+
28
-
59
+ app.use('/', indexRouter);
60
+
29
-
61
+ app.use('/users', usersRouter);
62
+
30
-
63
+ app.use('/hello', helloRouter);
64
+
65
+
66
+
67
+ // catch 404 and forward to error handler
68
+
69
+ app.use(function(req, res, next) {
70
+
71
+ next(createError(404));
72
+
73
+ });
74
+
75
+
76
+
31
- // routeの設定
77
+ // error handler
78
+
32
-
79
+ app.use(function(err, req, res, next) {
80
+
81
+ // set locals, only providing error in development
82
+
83
+ res.locals.message = err.message;
84
+
33
- app.use("/hello", require("./routes/index.js"));
85
+ res.locals.error = req.app.get('env') === 'development' ? err : {};
86
+
87
+
88
+
34
-
89
+ // render the error page
35
-
36
-
90
+
37
- app.listen(3000);
91
+ res.status(err.status || 500);
92
+
38
-
93
+ res.render('error');
94
+
95
+ });
96
+
97
+
98
+
99
+ module.exports = app;
100
+
39
- ```
101
+ ```
40
-
41
-
42
-
102
+
103
+
104
+
43
- routes/index.js
105
+ routes/hello.js
44
-
106
+
45
- ```JavaScript
107
+ ```js
46
108
 
47
109
  var express = require('express');
48
110
 
@@ -60,7 +122,7 @@
60
122
 
61
123
  };
62
124
 
63
- res.render('hello.ejs', data);
125
+ res.render('hello', data);
64
126
 
65
127
  });
66
128
 
@@ -78,7 +140,7 @@
78
140
 
79
141
  };
80
142
 
81
- res.render('hello.ejs', data);
143
+ res.render('hello', data);
82
144
 
83
145
  });
84
146
 
@@ -94,28 +156,70 @@
94
156
 
95
157
  ```ejs
96
158
 
97
- <body>
159
+ <body>
98
-
160
+
99
- <head>
161
+ <head>
100
-
162
+
101
- <h1><%= title %></h1>
163
+ <h1><%= title %></h1>
102
-
164
+
103
- </head>
165
+ </head>
104
-
166
+
105
- <div role="main">
167
+ <div role="main">
106
-
168
+
107
- <p><%- content %></p>
169
+ <p><%- content %></p>
108
-
170
+
109
- <form method="post" action="/hello/post">
171
+ <form method="post" action="/hello/post">
110
-
172
+
111
- <input type="text" name="message">
173
+ <input type="text" name="message">
112
-
174
+
113
- <input type="submit" value="send">
175
+ <input type="submit" value="send">
114
-
176
+
115
- </form>
177
+ </form>
116
-
178
+
117
- </div>
179
+ </div>
118
-
180
+
119
- </body>
181
+ </body>
120
-
182
+
121
- ```
183
+ ```
184
+
185
+ で問題なく動きました・・・再現しないですね・・・
186
+
187
+
188
+
189
+ package.json
190
+
191
+ ```json
192
+
193
+ {
194
+
195
+ "name": "express-test",
196
+
197
+ "version": "0.0.0",
198
+
199
+ "private": true,
200
+
201
+ "scripts": {
202
+
203
+ "start": "node ./bin/www"
204
+
205
+ },
206
+
207
+ "dependencies": {
208
+
209
+ "cookie-parser": "~1.4.3",
210
+
211
+ "debug": "~2.6.9",
212
+
213
+ "ejs": "~2.5.7",
214
+
215
+ "express": "~4.16.0",
216
+
217
+ "http-errors": "~1.6.2",
218
+
219
+ "morgan": "~1.9.0"
220
+
221
+ }
222
+
223
+ }
224
+
225
+ ```

1

動作確認コード記載

2018/11/14 10:11

投稿

rururu3
rururu3

スコア5545

test CHANGED
@@ -3,3 +3,119 @@
3
3
 
4
4
 
5
5
  https://github.com/expressjs/body-parser
6
+
7
+
8
+
9
+ index.js
10
+
11
+ ```JavaScript
12
+
13
+ var express = require("express");
14
+
15
+ var app = express();
16
+
17
+ var bodyParser = require('body-parser')
18
+
19
+
20
+
21
+ app.use(bodyParser.urlencoded({ extended: false }))
22
+
23
+
24
+
25
+ // staticメソッドを利用し、指定ディレクトリ以下の静的ファイルを読み込む
26
+
27
+ app.use("/public", express.static(__dirname + "/public"));
28
+
29
+
30
+
31
+ // routeの設定
32
+
33
+ app.use("/hello", require("./routes/index.js"));
34
+
35
+
36
+
37
+ app.listen(3000);
38
+
39
+ ```
40
+
41
+
42
+
43
+ routes/index.js
44
+
45
+ ```JavaScript
46
+
47
+ var express = require('express');
48
+
49
+ var router = express.Router();
50
+
51
+
52
+
53
+ router.get('/', (req, res, next) => {
54
+
55
+ var data = {
56
+
57
+ title: 'Hello!',
58
+
59
+ content: 'Please write a something.'
60
+
61
+ };
62
+
63
+ res.render('hello.ejs', data);
64
+
65
+ });
66
+
67
+
68
+
69
+ router.post('/post',(req, res, next) => {
70
+
71
+ var msg = req.body['message'];
72
+
73
+ var data = {
74
+
75
+ title: 'Thank you for the message',
76
+
77
+ content: 'You send [' + msg + '].'
78
+
79
+ };
80
+
81
+ res.render('hello.ejs', data);
82
+
83
+ });
84
+
85
+
86
+
87
+ module.exports = router;
88
+
89
+ ```
90
+
91
+
92
+
93
+ views/hello.ejs
94
+
95
+ ```ejs
96
+
97
+ <body>
98
+
99
+ <head>
100
+
101
+ <h1><%= title %></h1>
102
+
103
+ </head>
104
+
105
+ <div role="main">
106
+
107
+ <p><%- content %></p>
108
+
109
+ <form method="post" action="/hello/post">
110
+
111
+ <input type="text" name="message">
112
+
113
+ <input type="submit" value="send">
114
+
115
+ </form>
116
+
117
+ </div>
118
+
119
+ </body>
120
+
121
+ ```