因此,我试图设置此添加帖子页面,并在命令提示符下不断获取此“ GET / posts / add 500 4.339 ms-204”。
完整代码:https://github.com/vnkvp/blog
感谢您的反馈
这是我的router / posts.js:
router.get('/add', (req, res, next)=>{
res.render('addpost', {
'title':'Add post'
});
});
module.exports = router;
这是我的app.js:
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use((req, res, next)=>{
req.db = db;
next();
});
app.use('/', indexRouter);
app.use('/posts', postsRouter);
//捕获404并转发到错误处理程序
app.use(function (req, res, next) {
next(createError(404));
});
//error handler
app.use(function (err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
//render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
addpost.ejs文件
<html>
<body>
<div class="container">
<h1>title</h1>
<ul class="errors">
<% if(errors) { %>
<% for (var i = 0; i < errors.length;i++) { %>
<li><%= errors[i].msg %></li>
<% } %>
<% } %>
</ul>
<form method="POST" action="/posts/add" enctype="multipart/form-data">
<div class="form">
<label>Title:</label>
<input type="text" name="title">
</div>
<div class="form">
<label>Category</label>
<input type="text" name="title">
</div>
</form>
</div>
</body>
</html>
答案 0 :(得分:0)
在致电res.render
res.render('addpost', {
'title':'Add post'
});
您正在将变量title
发送到addpost.ejs视图,但是在该视图中未使用title
。该视图试图使用名为errors
的数组,但是您尚未将该数组传递给视图,因此以下操作将失败:
<% if(errors) { %>
<% for (var i = 0; i < errors.length;i++) { %>
<li><%= errors[i].msg %></li>
<% } %>
<% } %>
尝试这样的事情:
res.render('addpost', {
'title':'Add post',
'errors': ['test error1', 'test error2']
});
如果您可以在页面上看到这些测试错误,则只需要确保将正确的错误发送到视图即可。