我試圖理解為什么以下代碼會引發錯誤。
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 沖突的東西嗎?
uj5u.com熱心網友回復:
res.write開始寫入正文,但在它可以這樣做之前,它必須寫入所有標題,之后您不能再寫入任何額外的標題。但是會根據其引數是 Javascript 物件還是字串來res.send撰寫附加標頭。Content-Type因此你不能使用res.sendafter res.write。
res.send旨在單獨使用,例如res.jsonor res.render。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/526312.html
上一篇:如何過濾來自mongodb的資料,即(日期 年份(這些都來自資料庫))和今天的日期之間的差異小于或等于一個月
下一篇:在server.ts中添加retrieveUserId時,“void”不可分配給“PathParams”型別的引數
