簡體   English   中英

將標頭發送到客戶端后端錯誤后無法設置標頭

[英]Cannot set headers after they are sent to the client backend error

我創建了一個簡單的后端函數,它應該對從前端發送的日期進行不同的檢查。

 async checkVacation(req: Request, res: Response) {
        try {
            let currentUser = req.user as User
            let dates = this.getBodyDates(req.body)
            if (dates.start == null || req.body.end == null ||this.beforeTodayCheck(dates.start.toString()) ==true ) {
                res.status(400).send("Start and/or End date is invalid")
            }
            let vacationDays = await this.getDBVacationDay(dates.start, dates.end, currentUser.Id)
            res.send(vacationDays)
        } catch (err) {
            console.error(err)
            res.status(400).send(err)
        }
    }

所以基本上這個函數應該檢查給定的日期是否為空,以及給定的開始日期是否在今天之前。 一旦我提供了一些無效的日期,后端就會給我這些錯誤

錯誤 [ERR_HTTP_HEADERS_SENT]:將標頭發送到客戶端后無法設置標頭 UnhandledPromiseRejectionWarning:錯誤 [ERR_HTTP_HEADERS_SENT]:將標頭發送到客戶端后無法設置標頭

我不知道如何處理這個錯誤。 問候,獅子座

將其放入“答案”而不是評論中。 正如 Ricky Mo 所說,這是因為res.send()的多次使用。

這可以通過將其更改為return res.send()來避免,這將確保只有一個會被運行。

干杯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM