首页 > 解决方案 > Node.Js错误发送到客户端后无法设置标头

问题描述

我是 node.js 的初学者,我注意到在我第一次执行我的请求后它工作但 node.js 在它之后启动一个错误,它说:

Can not set headers after they are sent to client

这是我尝试过的

问题服务:

module.exports={
 create:(data,callback)=>{
  var myArray = new Array();
 /* for(let item of data.players) {
    console.log(item.firstname);
}*/

console.log(data);
data.players.forEach((player) => {
  console.log(player.id);
  console.log(player);
  var playerModel ={
    id : player.id,
    firstname : player.firstname,
    lastname : player.lastname,
    position : player.position,
    price : player.price,
    appearences : player.appearences,
    goals : player.goals,
    assists : player.assists,
    cleansheets : player.cleansheets,
    redcards : player.redcards,
    yellowcards : player.yellowcards,
    image : player.image
  };
  console.log("model"+playerModel.position);
  myArray.push(playerModel);
});
var id;
 
 pool.query(
      'insert into club(userid,email,password,name,price) values(?,?,?,?,?)',
   [
        data.userid,
        data.email,
        data.password,
        data.name,
        data.price
      ],
    
      (error,result) => {
        if(error){
          callback(error);
         
        }
        
        for(var item of myArray){
          pool.query(
            
            'insert into players(id,firstname,lastname,position,price,appearences,goals,assists,cleansheets,redcards,yellowcards,image,clubid) values (?,?,?,?,?,?,?,?,?,?,?,?, ( SELECT id from club where id > ? ORDER BY id DESC limit 1  ) )',
             [ 
             item.id,
             item.firstname,
             item.lastname,
             item.position,
             item.price,
             item.appearences,
             item.goals,
             item.assists,
             item.cleansheets,
             item.redcards,
             item.yellowcards,
             item.image,
             0
             ],
            
       
           (error,results,fields)=>{
             if(error){
               callback(error);
             }
             return callback(null,results);
           },
          );
          }
        return callback(null,result.insertId);
      },

      
    );
   
  },

问题控制器:

const pool = require("../../config/database");
const{create,
  getQuestionsById,
  getQuestionsByCategory,
  getQuestions,
  getValidAnswer,
  setValide,
  CompareAnswers,
  updateQuestions,
  deleteQuestions
}=require("./questions.service");
module.exports={
  createQuestions:(req,res)=>{
    const body = req.body;
      create(body,(err,results)=>{
      if(err){
        console.log(err);
        return res.status(500).json({
          success:0,
          message:"database connexion error"
        });
      }
      return res.status(200).json({
        success:1,
        data:results
      });
    });
  },

路由器问题:

const{
  createQuestions,
  getQuestionsById,
  getQuestions,
  getQuestionsByCategory,
  getValidAnswer,
  CompareAnswers,
  setValide,
  updateQuestions,
  deleteQuestions,
  
}=require("./questions.controller");
const router = require("express").Router();

router.post("/addQuestion",createQuestions);

router.get("/:id",getQuestionsById);
router.patch("/updateQuestion",updateQuestions);
router.delete("/",deleteQuestions);
router.get("/",getQuestions);
router.get("/VerifyAnswer/:id",getValidAnswer);
router.post("/getByCategory",getQuestionsByCategory);
router.post("/setValide", setValide);
router.post("/CompareAnswers", CompareAnswers);

module.exports=router;

我的目标是阻止此错误并找到解决方案,我的代码有什么问题?为什么我必须在每次执行请求后再次运行服务器?为什么请求有效,但最终会引发此错误?

显示错误的屏幕截图:

在此处输入图像描述

标签: node.jsexpress

解决方案


我认为在您的问题服务中:

 (error,results,fields)=>{
             if(error){
               callback(error);
             }

你应该写 return callback(error) 这个错误通常发生在你的代码尝试为一个请求发送 2 个或更多响应时。让我知道它是否有帮助。


推荐阅读