Экспресс не рендеринг страницы - PullRequest
0 голосов
/ 14 января 2019

Я новичок в Javascript и Express, и в настоящее время я работаю над небольшим проектом, чтобы начать работать с фреймворком и языком. Я пытаюсь отобразить комментарий, который пользователь ввел бы, используя форму, отправляющую текстовое значение по запросу POST, который я затем сохраняю в файл. Чтобы отобразить их, я читаю файл json и анализирую его, а затем передаю значение в шаблон pug. Вот код:

Controller.js

module.exports.handle_comment = function handle_comment(comment) {
    try {
        let comments = io_utils.read_JSON_file(__dirname+"/comments.json");
        comments.comments.push(comment);

        io_utils.write_JSON_toFile(comments, __dirname+'/comments.json');

        return comments.comments;
    } catch(err) {
        console.log(err);
        return [];
    }
}

Prof.js

router.post('/timer', function(req, res, next) {
    const controller = require('../controllers/timer_controller');
    let commentaires = [];
    if(req.body.comment) {
       commentaires = controller.handle_comment(req.body.comment);
    }

    res.render('timer', {
        etudiant: req.body.etudiant,
        comments: commentaires
    });
});

Редактировать: timer.pug

extends layout

block content
    center
        if etudiant
            h1 Timer pour #{etudiant}
        else
            h1 Timer
        p Createur : #{prof}
        div#clockdiv
            div
                span.minutes
                p.smalltext Minutes
            div
                span.seconds
                p.smalltext Secondes

        script.
            var timeInMinutes = 2;
            var currentTime = Date.parse(new Date());
            var deadline = new Date(currentTime + timeInMinutes*60*1000);

            initializeClock('clockdiv', deadline);
        br
        br
        form.pure-form.pure-form-aligned(action="/prof/timer", method="POST")
            textarea.pure-input-1-2(name="comment", placeholder="Commentaires")
            br
            button.pure-button.pure-input-1-2.pure-button-primary(type="Submit") Envoyer

    h2 Commentaires
    if comments
        each comment in comments
            div.commentaire
                span.nom= comment.author
                p.commentaire= comment.text
                br

Почему-то, когда я нажимаю кнопку «отправить», страница даже не отображается. Однако, когда я удаляю строку, вызывающую функцию контроллера, страница отображается.

Что я делаю не так?

Редактировать: я использую fs.writeFileSync для записи в файл json

1 Ответ

0 голосов
/ 15 января 2019

Я нашел ошибку, и я пишу, чтобы тот, кто столкнулся с этой проблемой, не терял время на изучение своего кода, когда нет ошибки программирования:)

Проблема заключалась в том, что я запускал свой веб-сервер с помощью nodemon, что позволяет перезапускать его при каждом изменении файла, чтобы избежать проблем с его выключением и повторным запуском каждый раз. Я предполагаю, что, поскольку я писал в файл, сервер просто выключился и снова запустился, как только файл был сохранен.

Запуск его в обычном режиме с помощью 'npm run start' все исправил:)

...