[英]ExpressJS - Unhandled rejection Error: Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
[英]ErrorCaptureStackTrace(err); ^ Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
const seedRouter = express.Router();
seedRouter.get('/', async (req, res) => {
await Product.remove({});
const createdProducts = await Product.insertMany(Data.products);
res.send({ createdProducts });
await User.remove({});
const createdUsers = await User.insertMany(Data.users);
res.send({ createdProducts, createdUsers });
});
export default seedRouter;
node:internal/errors:484
ErrorCaptureStackTrace(err);
^
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at new NodeError (node:internal/errors:393:5)
at ServerResponse.setHeader (node:_http_outgoing:644:11)
at ServerResponse.header (F:\Laxman website\E-commerce\backend\node_modules\express\lib\response.js:794:10)
at ServerResponse.send (F:\Laxman website\E-commerce\backend\node_modules\express\lib\response.js:174:12)
at ServerResponse.json (F:\Laxman website\E-commerce\backend\node_modules\express\lib\response.js:278:15)
at ServerResponse.send (F:\Laxman website\E-commerce\backend\node_modules\express\lib\response.js:162:21)
at file:///F:/Laxman%20website/E-commerce/backend/routes/seedRoutes.js:15:7
at process.processTicksAndRejections (node:internal/process/task_queues:95:5) {
code: 'ERR_HTTP_HEADERS_SENT'
}
應用程序崩潰並返回上面的錯誤“無法在將標頭發送到客戶端后設置標頭”。 謝謝你。
此特定錯誤是由於嘗試向同一請求發送多個響應而引起的。 在您的特定情況下,您在同一個請求中兩次調用res.send()
。 你不能那樣做,因為res.send()
結束了請求。
我們不知道您要在請求處理程序中完成什么,但看來您可以刪除第一個res.send({ createdProducts });
因為您已經在第二個中發送了該數據。
您還需要圍繞await
進行try/catch
,以便捕獲 promise 拒絕並可以發送錯誤響應。
seedRouter.get('/', async (req, res) => {
try {
await Product.remove({});
const createdProducts = await Product.insertMany(Data.products);
await User.remove({});
const createdUsers = await User.insertMany(Data.users);
res.send({ createdProducts, createdUsers });
} catch(e) {
console.log(e);
res.sendStatus(500);
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.