Javascript express Error[ERR\u HTTP\u HEADERS\u SENT]:发送到客户端后无法设置头
我正在尝试执行get请求,但它在Javascript express Error[ERR\u HTTP\u HEADERS\u SENT]:发送到客户端后无法设置头,javascript,node.js,api,express,Javascript,Node.js,Api,Express,我正在尝试执行get请求,但它在app.jsres.json行上一直失败 app.js app.use(function(err, req, res, next) { res.locals.message = err.message; res.locals.error = req.app.get("env") === "development" ? err : {}; res.status(err.status || 500); res.json({ error: err.me
app.js
res.json
行上一直失败
app.js
app.use(function(err, req, res, next) {
res.locals.message = err.message;
res.locals.error = req.app.get("env") === "development" ? err : {};
res.status(err.status || 500);
res.json({ error: err.message });
});
型号
const fs = require("fs");
const fileName = "./seatData.json";
const file = require(fileName);
const Seat = function(seat) {
this.seat = seat.seat;
this.seatNumber = seat.seatNumber;
this.price = seat.price;
this.available = seat.available;
this.disabilityAccessible = seat.disabilityAccessible;
};
Seat.findSeat = seatNumber => {
return file.find(obj => obj.seatNumber === seatNumber);
};
Seat.getSeatByNumber = function(seatNumber, result) {
this.seat = this.findSeat(seatNumber);
if (Object.keys(this.seat).length > 0) {
result(null, this.seat);
} else {
result({ error: true, message: "Seat not found" });
}
};
Seat.bookSeat = function(seatNumber, result) {
this.seat = this.findSeat(seatNumber);
if (this.seat === undefined || Object.keys(this.seat).length === 0) {
result({ error: true, message: "Seat not found" });
}
const newSeatData = file.map(row => {
if (row.seatNumber === seatNumber) {
row.available = false;
this.seat = row;
}
return row;
});
fs.writeFile("./seatData.json", newSeatData, "utf-8", function(err) {
if (err) {
result({ error: true, message: "failed to update booking" });
}
});
result(null, this.seat);
};
module.exports = Seat;
路线
router.get(
"/bookSeat/:seatNumber",
[
check("seatNumber")
.exists(true)
.withMessage("Must pass seatNumber")
.matches(/^[0-9][a-z]$/i)
.withMessage("must start with a number(0-9) and end with a letter")
],
actions.update_seat
);
控制器
exports.update_seat = (req, res) => {
const errors = validationResult(req);
if (!errors.isEmpty()) {
res.status(422).json({ error: true, message: errors.array() });
}
console.log(errors);
Seat.bookSeat(req.params.seatNumber, (err, seat) => {
if (err) res.json(err);
else res.json(seat);
});
};
我正在尝试调用
bookSeat
发生错误后,您仍继续执行:
if (!errors.isEmpty()) {
res.status(422).json({ error: true, message: errors.array() });
return; // <<!!
}
if(!errors.isEmpty()){
json({error:true,message:errors.array()});
return;//这是因为在向客户端发送数据后,路由终结点中发生错误。您能告诉我们相关的路由吗?使用routeWhat is操作进行更新。更新\u seat
?使用控制器进行更新。我需要对控制器中的所有错误执行此操作。我对所有这些错误都有相同的问题。执行if(err)时有什么区别res.json(err);
它没有失败,然后它是一个if..else.if我在app.js中注释掉res.json({error:err.message});
它可以工作,但返回没有改变失败。如果有东西写入到res
中,你甚至没有显示出来,但问题是一样的。