尝试将页面添加到项目时,我在命令提示符下收到此错误500

时间:2019-07-05 21:38:56

标签: node.js express

因此,我试图设置此添加帖子页面,并在命令提示符下不断获取此“ 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>

1 个答案:

答案 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']
    });

如果您可以在页面上看到这些测试错误,则只需要确保将正确的错误发送到视图即可。