该错误通常是由于尝试在响应已发送到客户端之后再次发送响应而引起的。在 Express 中,可以使用 next() 函数来传递控制权并确保只发送一次响应。以下是范例代码:
app.post('/example', (req, res, next) => {
const { property } = req.body;
if (!property) {
return res.status(400).send('Missing required property.');
}
// do something with property...
next();
});
app.post('/example', (req, res) => {
// send response here...
});
在这个示例中,如果请求体中缺少必需的属性,则第一个路由处理程序将发送错误响应,并在发送响应后使用 return 语句退出。由于没有调用 next() 函数,请求将被阻止继续通过第二个路由处理程序。如果属性存在,则处理程序将成功执行,并调用 next() 函数以允许请求通过到第二个路由处理程序,该处理程序将发送实际响应。
通过这种方式,可以避免在发送响应后尝试更改标头并导致表单数据错误。