NodeJS 控制台显示错误[ERR_HTTP_HEADERS_SENT]:将标头发送到客户端后无法设置标头

fae0ux8s  于 2023-08-04  发布在  Node.js
关注(0)|答案(1)|浏览(117)

我不知道如何修复这个错误。
但是当我通过PostMan发送数据时,它很好地保存了所有内容并完成了它的工作,但是我在控制台上得到了这个错误。如果我删除.json(table).end(),它就可以工作了。
export const build_tab = async(req:明示请求,res:express.Response)=> { try{ const { seats,number } = req.body ;

if(!seats||!number){
       return res.sendStatus(400);
    }
    const _id = require('uuid').v4() ;
   
    const table = await createTable({
        _id,
        number,
        seats
    });

    return res.sendStatus(200).json(table).end();
}
catch(error){
   console.log(error)         ;
   return res.sendStatus(400) ;
}

字符串
}

ffdz8vbo

ffdz8vbo1#

res.sendStatus(<code>)并不意味着与任何其他express函数链接,因为它自己设置状态并发送响应体。请参阅文档:
将响应HTTP状态代码设置为statusCode,并将注册的状态消息作为文本响应正文发送。如果指定了一个未知的状态代码,则响应正文将只是代码编号。
因此,如果你想发送一个自定义的json body,不要使用.sendStatus()。相反,只需使用以下内容:

return res.status(200).json(table)

字符串
请注意,您不需要在.json(...)后面加上.end()。以下是.end()的文档:
用于在没有任何数据的情况下快速结束响应。如果您需要用数据进行响应,请改用res.send()和res.json()等方法。

相关问题