読者です 読者をやめる 読者になる 読者になる

望月いちろうのREADME.md

書き溜めておいた技術記事や旅行記のバックアップです。

Node.js | エラーへの対処法 Error: Can't set headers after they are sent.

f:id:mochizuki_p:20161005031521j:plain

Error: Can't set headers after they are sent.

Node.jsのアプリケーションで

Error: Can't set headers after they are sent.

と言うエラーメッセージが出ることがある。

これは、あるルートの中で一度レスポンスを返した場合に、別のレスポンスを返そうとした場合に発生するエラー

例をあげれば以下のルーティング内では、このエラーが発生する

router.get("/",(req,res,next)=>{

   if(flag == true){

      return res.send(true);
   }
   return res.send(false);
})

Node.jsではノンブロッキングI/Oという性質から、この場合でも同時に2つの返り値を出してしまうことがある。

対処法は、なんてことはない。

以下のようにしっかりと分岐条件を分けて書くことだ

router.get("/",(req,res,next)=>{

   if(flag == true){

      return res.send(true);
   }else{
      return res.send(false);
   }
})