Я получаю эту ошибку 500 в командной строке при попытке добавить страницу в мой проект - PullRequest
0 голосов
/ 06 июля 2019

Итак, я пытаюсь установить эту страницу addpost, и я продолжаю получать это «GET / posts / add 500 4.339 ms - 204» в моей командной строке.

полный код: https://github.com/vnkvp/blog

спасибо за любые отзывы

это мой роутер / 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 голосов
/ 06 июля 2019

При вызове 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']
    });

Если вы видите эти тестовые ошибки на своей странице, то вам просто нужно убедиться, что вы отправили правильную ошибку на ваш взгляд.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...