با سلام ،
داخل express میخوام وقتی status ست میکنم یه پیام هم برای پاسخ به فرم برگردونم .
که کد زیر رو دارم :
if (err) {
res
.status(500)
.send(`Error on parsing form : ${err}`)
.end();
}
اما با اررور زیر مواجه میشم :
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
با هر دستور دیگه ای هم که status رو ست کنم باز هم همین اررور رو دارم .
برای ارسال فرم و پردازش از ماژول formidable و کلاس FormData استفاده میکنم.
با تشکر.
سلام دوست من
اگر سعی بر ارسال جواب چندین بار در یک Middleware داشته باشید اکسپرس این خطا رو میده
میتونید کدتون رو درون try,catch قرار بدید و در بین try کدی که باید اجرای موفقیت آمیز داشته باشه به همراه جوابش
و درون catch جواب برای ارسال خطا
درون try برای بررسی بودن خطا یا خیر اگر خطایی بود میگید throw err که میفرستدش به catch و از اونجا خطا فرستاده میشه
مشکلی بود در خدمتم
موفق باشید
نه کد داخل یک route هست که برای پردازش فرم ارسال شده نوشته شده :
app.post("/upload", (req, res) => {}
که داخلش دستورای مختلفی هست که داخل callback اونها err چک شده که اگر وجود داشته باشه متناسب باهاش status و یه پیام send میشه .
هرکدوم از res.status و res.send به تنهایی کار میکنن اما با هم باعث اررور میشن . این res به ماژول axios برگردونده میشه که با async و await داخل try catch قرار داره .
به طور معمول توی nodeJS سرچ کردم اول status و بعد send هست و مشکلی ایجاد نمیکنه . اما اینجا باعث ارور شده .
( با یه سری از status های خاص دیتای توی send فرستاده نمیشه ، و res.send یا res.end باعث متوقف شدن اجرای کد نمیشن )