Sungtt

ERR_HTTP_HEADERS_SENT 본문

Node

ERR_HTTP_HEADERS_SENT

sungtt 2022. 2. 9. 02:05

ERR_HTTP_HEADERS_SENT

 

api통신으로 mysql에 데이터를 저장하던 도중 만난 오류다.

간결하게 원인부터 설명하자면

res.응답메서드는 한번만 사용이 가능한데,

짜여진 코드에선 중복호출을 하게되어 오류가 나는것이다.

 

현재 코드에선 간단하게 res가 중복호출되는 부분을 찾아서

지워주기만 해도 해결되었다.

map함수안에 res가 들어있어 중복호출이 되고있었음

 

이때 2차적으로 해야할것은 에러핸들링의 필요성을 느꼈다.

오류가 날때마다 서버가 강제종료되어 번거로웠는데

에러를 핸들링하게된다면 서버가 종료되는일은 막을 수 있다.

 

 

before 코드

app.post('/api/get', function(req, res) {
    req.body.map((i) => {
        console.log(i.title);
        const title = i.title;
        const date = i.date; 
        const sqlQuery = "INSERT INTO event_olive (date,title) VALUES (?,?)";
        db.query(sqlQuery, [date, title], (err,result) => {
            res.send('succ') // 이 부분에서 중복호출로 인해 오류
        });
    });
  });

after 코드

app.post('/api/get', function(req, res) {
    req.body.map((i) => {
        console.log(i.title);
        const title = i.title;
        const date = i.date; 
        const sqlQuery = "INSERT INTO event_olive (date,title) VALUES (?,?)";
        db.query(sqlQuery, [date, title], (err,result) => {});
    });
  });

 

 

https://www.inflearn.com/questions/6627

Comments