'RangeError: Превышен максимальный размер стека вызовов' при отправке почтового запроса, Node.js, body-parser, express
Я новичок в node.js
, я Я столкнулся с проблемой при просмотре видео # 30 из этой серии уроков по node.js и express, и я совершенно не понимаю, почему это происходит.
Я смотрю видео о постах, и в этом руководстве я настроил app.post для страницы '/contact'
, как показано ниже, но при отправке я получаю сообщение об ошибке, показанное ниже. Если я закомментирую код app.post
, все будет работать нормально, поэтому я предполагаю, что именно здесь он и ломается.
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const urlencodedParser = app.use(bodyParser.urlencoded({ extended: false }));
app.set('view engine', 'ejs');
app.use('/assets', express.static('assets'));
app.get('/', function(req, res){
res.render('index');
});
app.get('/contact', function(req, res){
res.render('contact', {qs: req.query});
});
app.post('/contact', urlencodedParser, function(req, res){
console.log(req.body);
res.render('contact', {qs: req.query});
});
app.get('/profile/:id', function(req, res){
var data = { age: 29, job: "ninja", hobbies: ['eating', 'fighting', 'fishing'] };
res.render('profile', {person: req.params.id, data: data});
});
app.listen(3000);
/contact page:
<html lang="en" dir="ltr">
<head>
<style media="screen">
body{
background: skyblue;
font-family: verdana;
color: #fff;
padding: 30px;
}
h1{
font-size: 48px;
text-transform: uppercase;
letter-spacing: 2px;
text-align: center;
}
p{
font-size: 16px;
text-align: center;
}
</style>
<meta charset="utf-8">
<title></title>
</head>
<body>
<%- include ('partials/nav') %>
<h1>Contact Us!</h1>
<p>Contact the coolest cats on the web right here...</p>
<form id="contact-form" method="POST" action="/contact">
<label for="who">Who do you want to contact</label>
<input type="text" name="who" value="<%= qs.person %>">
<label for="department">Which department?</label>
<input type="text" name="department" value="<%= qs.dept %>" >
<label for="email">Your email</label>
<input type="email" name="email" >
<input type="submit" name="submit" >
</form>
</body>
</html>
Ошибка:
RangeError: Maximum call stack size exceeded
at /home/gavin/Documents/nodeJsTutorials-master/node_modules/express/lib/router/index.js:629:19
at next (/home/gavin/Documents/nodeJsTutorials-master/node_modules/express/lib/router/index.js:210:14)
at next (/home/gavin/Documents/nodeJsTutorials-master/node_modules/express/lib/router/route.js:127:14)
at Layer.handle_error (/home/gavin/Documents/nodeJsTutorials-master/node_modules/express/lib/router/layer.js:67:12)
at next (/home/gavin/Documents/nodeJsTutorials-master/node_modules/express/lib/router/route.js:135:13)
at /home/gavin/Documents/nodeJsTutorials-master/node_modules/express/lib/router/index.js:635:15
at next (/home/gavin/Documents/nodeJsTutorials-master/node_modules/express/lib/router/index.js:260:14)
at Layer.handle [as handle_request] (/home/gavin/Documents/nodeJsTutorials-master/node_modules/express/lib/router/layer.js:97:5)
at trim_prefix (/home/gavin/Documents/nodeJsTutorials-master/node_modules/express/lib/router/index.js:317:13)
at /home/gavin/Documents/nodeJsTutorials-master/node_modules/express/lib/router/index.js:284:7