【发布时间】:2022-11-02 23:48:25
【问题描述】:
我试图理解为什么以下代码会引发错误。
app.get("/", (req, res) => {
res.write("Hello");
res.send(" World!");
})
// Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
app.get("/", (req, res) => {
res.write("Hello");
res.write(" World!");
res.end();
})
// Works fine
我看不到在 res.send 之后如何设置标题,因为 res.send 是设置标题的人。
我在网上看到 res.send 相当于 res.write + res.end,但这表明它并不完全正确。
我希望能够将基本数据写入响应,然后使用 res.send 来完成这项有用的任务,例如根据发送的数据自动设置 Content-Type 标头。
app.use((req, res, next) => {
res.write("Base data");
next();
})
app.get("/", (req, res) => {
res.send("Route specific data");
})
// Result: Base data + Route specific data
除了 res.write 之外,还有什么可以让我将数据写入响应但不与 res.send 冲突的东西吗?
【问题讨论】:
-
expressjs.com/en/api.html#res.send 文档明确告诉你这一点->
This method performs many useful tasks for simple non-streaming responses:
标签: javascript node.js api express