我对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文件
答案 0 :(得分:0)
我发现了错误,然后发布,这样在没有编程错误的情况下,面对这个问题的人都不会浪费时间研究他们的代码:)
问题是我正在使用nodemon运行我的Web服务器,该服务器允许在每次文件更改时重新启动它,从而避免了将其关闭并每次重新启动的麻烦。 我猜是因为我正在写文件,所以服务器在保存文件后就立即关闭并重新启动。
使用'npm run start'正常运行会修复所有问题:)