我在节点上放了一个小的Todo列表应用程序,并且遇到了上面的错误。我也使用ejs作为模板。我的app.js文件如下所示。
const express = require("express");
const bodyParser = require("body-parser");
//const request = require('request');
const date = require(__dirname + "/date.js")
//console.log(date());
const app = express();
app.use(express.static("public"));
const listItems = ['cooking', 'shopping', 'watch TV', 'go to the gym'];
const workItems = []
app.use(bodyParser.urlencoded({extended: true}));
app.set("view engine", "ejs");
app.get("/", function(req, res){
const day = date.getDate();
res.render("list", { listTitle: day, items: listItems });
});
app.post('/', function(req, res){
//post items
const item = req.body.newItem;
if (req.body.list === "Work") {
workItems.push(item)
res.redirect("/work")
} else {
listItems.push(item);
res.redirect("/")
}
//
listItems.push(item);
res.redirect("/")
})
app.get('/work', function(req, res){
res.render("list", {listTitle: "Work List", items: workItems});
});
app.post('/work', function(req, res){
//post items
let item = req.body.newItem;
workItems.push(item)
res.redirect("/work")
})
app.listen(3000, function(){
console.log("Server started on port 3000.");
});
当我添加一个项目时,它似乎可以正常工作,但这就是我在控制台中所拥有的,而且我不确定哪里出了问题。
答案 0 :(得分:0)
您的问题在本部分中,您在res.redirect("/")
之外调用ifelse
并生成错误,因为如果res.redirect()
是true或false并在之后不久将被调用这些条件再次被调用。并且在发送后无法设置标题。
app.post('/', function(req, res){
//post items
const item = req.body.newItem;
if (req.body.list === "Work") {
workItems.push(item)
res.redirect("/work")
} else {
listItems.push(item);
res.redirect("/")
}//
listItems.push(item);
res.redirect("/")
})
您必须努力检查自己的逻辑,或者可能是在此代码段中使用switch的情况。