• 1398/05/27

Cannot set headers after they are sent to the client :

با سلام ،

داخل 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 استفاده میکنم.

با تشکر.

  • 1398/05/28
  • ساعت 07:54

سلام دوست من

اگر سعی بر ارسال جواب چندین بار در یک Middleware داشته باشید اکسپرس این خطا رو میده

میتونید کدتون رو درون try,catch قرار بدید و در بین try کدی که باید اجرای موفقیت آمیز داشته باشه به همراه جوابش

و درون catch جواب برای ارسال خطا

درون try برای بررسی بودن خطا یا خیر اگر خطایی بود میگید throw err که میفرستدش به catch و از اونجا خطا فرستاده میشه

مشکلی بود در خدمتم

موفق باشید


  • 1398/05/28
  • ساعت 09:52

نه کد داخل یک 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 باعث متوقف شدن اجرای کد نمیشن )


logo-enamadlogo-samandehi