기본 콘텐츠로 건너뛰기

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client

https://www.codementor.io/@oparaprosper79/understanding-node-error-err_http_headers_sent-117mpk82z8

request with no body -> server should send back 400 to client
request with body ->  server should send back 200 to client

The request handler is simply a javascript anonymous function that takes the req& res arguments.

Since this request handler has no explicit command for exiting the function in a situation a request body is not found and the error response is sent back to the client, therefore AFTER THE IF STATEMENT CONDITION has being resolved,
the server tries to send ANOTHER RESPONSE to the client and here is when the error comes up

Express is attempting to set the response header for this second response, hence the error message shows

HOW TO FIX

WHEN SENDING 400 ERR RESPONSE, SEND IT AS RETURN (reponse to a request with no body)
so that the server sends the correct response and STOP the function execution as necessary.

댓글

이 블로그의 인기 게시물

JS 5.5 task6 Create an extendable calculator

<HTML>   <body>   </body>   <script> function Calculator() {   let methods = {     "-" : (a, b) => a - b,     "+" : (a, b) => a + b   };   //methods is an object which keeps key for operators   //and value to return the actual operation values   //each returns the result of operation that key(operator) does   this.calculate = function (str){     //calculate is one element in the function Calculator     //it takes the string and returns the value     //in the function element list is delimeted by , not ;     let split = str.split(" "),     a = +split[0],     op = split[1],     b = split [2]     if(!methods[op] || isNaN(a) || isNaN(b)) {       return NaN; // error handling     }     return methods[op](a,b);   }   this.addMethod = function(name, func){     methods[name] = func;     //this is how to add new key and ele to object   } } let powerCalc = new Calculator; powerCalc.addMethod("*&

JS 5.7 task5 Store read dates

<HTML>   <body>   </body>    <script>    let messages = [        {text: "Hello", from: "John"},        {text: "How goes?", from: "John"},        {text: "See you soon", from: "Alice"}    ];    let readMap = new WeakMap();    alert(readMap.size);    readMap.set(messages[0], new Date(2019, 3, 5));   </script> </HTML> <!-- task4 needed weakSet to save simply readmessage, this task needs to save THE TIME IT WAS READ along with the message itself the message out of the set or map means it hasn't been read I kinda feel good and bad at the same time to happen to read the solution but I do get to think more about the difference with tasks and be more available to understand the main contents so I think, its good? -->

JS 5.7 task 2 Filter anagrams

<HTML>   <body>   </body>    <script>    function aclean(arr){      let map = new Map();      for(let word of arr){        let sorted = word        .toLowerCase() // delete the case difference        .split('') //split it to sort        .sort() // sort it to delete the order difference        .join(''); // join to use as a key = one word        map.set(sorted, word);        //set saves keys by the key not by the value,        //the words canoot be saved when word with the same        //key is saved already        //map = is a collection of keyed value        //set = is a colelction of unique value      }       return Array.from(map.values());     }    let arr = ["nap", "teachers", "cheaters", "PAN", "ear", "era", "hectares"];    alert( aclean(arr) );   </script> </HTML> <!-- could not actually solve it but the solution logic was in