表达不呈现页面

时间:2019-01-14 14:35:16

标签: javascript node.js express pug

我对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 :(得分:0)

我发现了错误,然后发布,这样在没有编程错误的情况下,面对这个问题的人都不会浪费时间研究他们的代码:)

问题是我正在使用nodemon运行我的Web服务器,该服务器允许在每次文件更改时重新启动它,从而避免了将其关闭并每次重新启动的麻烦。 我猜是因为我正在写文件,所以服务器在保存文件后就立即关闭并重新启动。

使用'npm run start'正常运行会修复所有问题:)