جواد
1 سال پیش توسط جواد مطرح شد
4 پاسخ

ارور Cannot set headers after they are sent to the client

سلام خسته نباشید کد زیر به من ارور Error: connect ECONNREFUSED 127.0.0.1:3000 در postman و ارور Cannot set headers after they are sent to the client در nodejs رو میده.میشه بگید این ارور چیه و مشکل از کجاست؟نکته ای که هست اینه که وقتی یه ادیت کوچیک و بی تاثیر در برنامه انجام می دم و سیو می کنم دفعه اول این ارور رو نمی ده اما دفعه های بعدی ارور می ده.

router.post('/login' , async (req , res)=>{
    try {
        const user = await User.findOne({username : req.body.username})
        !user && res.status(500).json('there is not any user')

        const hashedpassword = cryptoJS.AES.decrypt(user.password, process.env.pass_key);
        const password = hashedpassword.toString()

        password !== req.body.password && 
            res.status(401).json('password is incorrect')

        res.status(200).json(user) 

    } catch (err) {
        res.status(500).json(err)
    }
})

ثبت پرسش جدید
T Game
@TGame 1 سال پیش مطرح شد
2

سلام دوست عزیز
این ارور زمانی رخ میده که هر request به سمت سرور میره سرور چند تا response بر میگردونه
راه حل این موضوع اینه که شما وقتی داری response بر میگردونی با توجه شرط هایی که گذاشتی از return استفاده کنی تا سراغ response های بعدی نره !
مثالش :

router.post('/login' , async (req , res)=>{
  try {
      const user = await User.findOne({username : req.body.username})
      if (!user) return res.status(500).json('there is not any user')

      const hashedpassword = cryptoJS.AES.decrypt(user.password, process.env.pass_key);
      const password = hashedpassword.toString()

      if (password !== req.body.password) 
          return res.status(401).json('password is incorrect')

      res.status(200).json(user) 

  } catch (err) {
      res.status(500).json(err)
  }
})

سینا شاه‌اویسی
تخصص : برنامه نویس فرانت اند
@sinashahoveisi 1 سال پیش آپدیت شد
1

سلام این تیکه از کد رو استفاده کن و جایگزین کن

if(password !== req.body.password)
    return res.status(401).json('password is incorrect')

جواد
@sherlockkh221 1 سال پیش مطرح شد
0

ممنون درست شد.
دو سوال دیگه هم داشتم اگر لطف کنید.برنامه ی من به شدت سادست و اولشه ولی من تازه دارم با نود کار می کنم و به مشکل می خورم.
1 -در اسکیما من unique کار نمی کنه اصلا !!
2- از crypto js برای هش کردن استفاده می کنم.چیزی که بهش می دم با چیزی که در اخر بعد از دکریپت کردن بهم می ده با هم فرق داره 😅!!!


T Game
@TGame 1 سال پیش مطرح شد
1

سلامی دوباره

  1. به احتمال زیاد دیتایی تو دیتابیست بوده و بعدا فیلدی رو unique کردی در این صورت دیتایی که قبلا بوده رو در نظر نمیگیره باید دیتارو کلا پاک کنی و بعدش تست کنی یا اگه این مورد نبود غلط املایی چیزی شاید باشه در اخرم مشکلت حل نشد کد هاتو قرار بده تا بهتر راهنمایی کنیم !
  2. در قسمتی که رمز عبور کاربر رو در متغیری ذخیره کردی به شکل زیر عمل کن
    const password = hashedpassword.toString(cryptoJS.enc.Utf8)

    دلیلشم اینه که وقتی رمز عبور کاربر رو از هش خارج میکنی تبدیل به بایت میکنه و با کد بالا تبدیلش میکنی به استرینگ البته با encoder utf8.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام