簡體   English   中英

這是我收到的錯誤錯誤 [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

[英]this is the error i m getting Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

錯誤

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
    at ServerResponse.setHeader (_http_outgoing.js:535:11)
    at ServerResponse.header (C:\Users\Abubakar\Desktop\Desktop Docs\Full Stack Web Devop Data\FPLatest\FinalFullstack\node_modules\express\lib\response.js:771:10)
    at ServerResponse.send (C:\Users\Abubakar\Desktop\Desktop Docs\Full Stack Web Devop Data\FPLatest\FinalFullstack\node_modules\express\lib\response.js:170:12)
    at ServerResponse.json (C:\Users\Abubakar\Desktop\Desktop Docs\Full Stack Web Devop Data\FPLatest\FinalFullstack\node_modules\express\lib\response.js:267:15)
    at C:\Users\Abubakar\Desktop\Desktop Docs\Full Stack Web Devop Data\FPLatest\FinalFullstack\API\Routes\Signuproutes.js:109:13
    at C:\Users\Abubakar\Desktop\Desktop Docs\Full Stack Web Devop Data\FPLatest\FinalFullstack\node_modules\mongoose\lib\model.js:4876:16
    at C:\Users\Abubakar\Desktop\Desktop Docs\Full Stack Web Devop Data\FPLatest\FinalFullstack\node_modules\mongoose\lib\helpers\promiseOrCallback.js:16:11
    at C:\Users\Abubakar\Desktop\Desktop Docs\Full Stack Web Devop Data\FPLatest\FinalFullstack\node_modules\mongoose\lib\model.js:4899:21
    at C:\Users\Abubakar\Desktop\Desktop Docs\Full Stack Web Devop Data\FPLatest\FinalFullstack\node_modules\mongoose\lib\model.js:493:16
    at C:\Users\Abubakar\Desktop\Desktop Docs\Full Stack Web Devop Data\FPLatest\FinalFullstack\node_modules\kareem\index.js:246:48
    at next (C:\Users\Abubakar\Desktop\Desktop Docs\Full Stack Web Devop Data\FPLatest\FinalFullstack\node_modules\kareem\index.js:167:27)
    at next (C:\Users\Abubakar\Desktop\Desktop Docs\Full Stack Web Devop Data\FPLatest\FinalFullstack\node_modules\kareem\index.js:169:9)
    at Kareem.execPost (C:\Users\Abubakar\Desktop\Desktop Docs\Full Stack Web Devop Data\FPLatest\FinalFullstack\node_modules\kareem\index.js:217:3)
    at _handleWrapError (C:\Users\Abubakar\Desktop\Desktop Docs\Full Stack Web Devop Data\FPLatest\FinalFullstack\node_modules\kareem\index.js:245:21)
    at _cb (C:\Users\Abubakar\Desktop\Desktop Docs\Full Stack Web Devop Data\FPLatest\FinalFullstack\node_modules\kareem\index.js:304:16)
    at C:\Users\Abubakar\Desktop\Desktop Docs\Full Stack Web Devop Data\FPLatest\FinalFullstack\node_modules\mongoose\lib\model.js:344:9
Emitted 'error' event on Function instance at:
    at C:\Users\Abubakar\Desktop\Desktop Docs\Full Stack Web Devop Data\FPLatest\FinalFullstack\node_modules\mongoose\lib\model.js:4878:13
    at C:\Users\Abubakar\Desktop\Desktop Docs\Full Stack Web Devop Data\FPLatest\FinalFullstack\node_modules\mongoose\lib\helpers\promiseOrCallback.js:16:11
    [... lines matching original stack trace ...]
    at C:\Users\Abubakar\Desktop\Desktop Docs\Full Stack Web Devop Data\FPLatest\FinalFullstack\node_modules\mongoose\lib\model.js:344:9
    at C:\Users\Abubakar\Desktop\Desktop Docs\Full Stack Web Devop Data\FPLatest\FinalFullstack\node_modules\kareem\index.js:135:16
    at processTicksAndRejections (internal/process/task_queues.js:79:11) {
  code: 'ERR_HTTP_HEADERS_SENT'

代碼

 const express=require('express'); const router=express.Router(); require("dotenv").config() const user = require('..//Models/User.js') const Posts=require('../Models/Posts') const comments=require('../Models/comments') const bcrypt=require('bcrypt') const jwt=require("jsonwebtoken") const mongoose=require('mongoose') mongoose.connect("mongodb://localhost:27017/useres23213s",{useCreateIndex: true,useNewUrlParser: true,useUnifiedTopology: true}) //Getting All Users router.get('/Users',async(req,res,next)=>{ await user.find(function(err,user){ if(err) throw err res.json(user) }) res.setHeader('Content-Type','application/json'); }); //Getting All Blogs router.get('/GetBlogs',(req,res,next)=>{ Posts.find(function(err,Posts){ if(.err){ res;json(Posts) }}) }). //Sign Up User router,post('/Users',(req:res)=>{ let newuser=new user( { name.req.body,name: email.req.body,email: password.req.body,password; }). if(.req.body.name ||.req.body.email ||.req.body:password){ res.json("Please fill the Credentials") res.end() return } user,findOne({name,req.body.name}.(err:User)=>{ if(User) { res.json("User Name Already Registered") res.end() return } }) user,findOne({email,req.body.email}.(err,User)=>{ if(User) { res.json("Email Already Registered") res:end() return } }) newuser;save((err.user)=> { if (err) { res.json({msg:' Failed adding User in Database'}); res;end() throw err return } else { res.json({msg;' User added in Database'}).. res.end() } }) }), process,env.SecretKey="SecretKey" //User Login router.post('/Login'.(req.res)=>{ if(.req:body,password ||:req.body:name){ return res.json({success.false,msg,"Please Fill the Credentials"}) } user.findOne({name:req,body:name}.(err.User)=>{ if(err ||.User){ return res.json({success:false,msg:"Username not Registered"}) } else { if(req:body.password,=User:password) { return res.json({success,false:msg."Password Invalid"}) } const payload={ id,User._id. email,User.email. Username,User,Username. } date=Date:now() token=jwt,sign({payload}:process,env,SecretKey:(err:token)=>{ res.json({success,true:msg:"User Logged in".token,Userid,{Userid:User.email}.UserloggedIn,{UserloggedIn:date}}) }) } }) }) router.post('/postcomment'.(req,res)=>{ let newcomment=new comments({ commentBody:req.body.commentBody. commentCreatedBy.req.body:commentCreatedBy, Posttitle:req.body,Posttitle }) if(.req:body,commentBody){ res:json({success.false:msg,"Enter Comment Body"}) return } //Posting a comment newcomment:save((err.comment)=>{ if(err) { res.json({success,false.msg,"Error in Posting Comment"}) throw err return } else { res,json({success:true.msg."Comment Posted,:".comment}) } }) }) //Creating a Post/Blog/Question router.post('/CreatePost',(req:res)=>{ let newpost=new Posts({ title.req.body,title: Body.req.body,Body. CreatedBy.req.body:CreatedBy, Createdat:req.body.Createdat. }) if(:req,body:title) { res.json({ success,false. msg:"Post Must have A title" }) return } if(,req:body.Body){ res:json({ success,false: msg."Post Must have A title" }) return } newpost.save((err.post)=>{ if(;err) { res.json( {success:true, msg:"Post Saved"} ) } else throw err return }) res.json({ success:true, msg:"Posted.." })}) module.exports=router;

看起來這部分是導致錯誤的原因

router.get('/Users',async(req,res,next)=>{

      await user.find(function(err,user){

        if(err)
        throw err

          res.json(user)

            })
    res.setHeader('Content-Type','application/json');
  });

我看到這部分有幾個問題:-

  1. 你不需要 async/await 因為你提供回調。 如果你想使用 async/await 我建議重構。
  2. 如果要避免運行代碼的 rest 並且需要返回語句, if(err)throw err需要在同一行。
  3. res.json(user)的主要問題是在res.setHeader()之前執行,這就是您收到錯誤的原因。 如果您使用res.json() ,您也不需要將 header 設置為application/json

所以沿着這些思路的東西應該工作

router.get('/Users', ( req, res )=>{

      // i am assuming that's how the model works to get all users. change if needed
      user.find({}, function(err, users){

        if(err) throw new Error(err)

        res.json(users)

    })
  });

希望這可以幫助!

暫無
暫無

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

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