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

【node.js】expressにてCan't set headers after they are sentでサーバーが落ちる

node.js express javascript

はじめに

最近ちょっといじってますが、またよくわからず簡単な事にはまってる気がする・・・
やりたかったことはurlパラメータを受け取ってmysqlを検索。結果をjsonで返すというだけです

で、mysqlからデータ取得してconsole.logすると取得できるところまでは確認できたのですがレスポンスを返そうとすると以下のエラー

javascript

router.get("/", function(req, res, next) {
    db.query("select * from users", function(err, rows) {
        if (!err) {
            res.json(rows);// ★ココで落ちる
        }
    });
});

コンソール出力

/var/www/html/example.com/public/node_modules/mysql/lib/protocol/Parser.js:78
throw err; // Rethrow non-MySQL errors                                                                                                       
^
Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:348:11)
at ServerResponse.header (/var/www/html/example.com/public/node_modules/express/lib/response.js:718:10)
at ServerResponse.send (/var/www/html/example.com/public/node_modules/express/lib/response.js:163:12)
at ServerResponse.json (/var/www/html/example.com/public/node_modules/express/lib/response.js:249:15)
at Query._callback (/var/www/html/example.com/public/controllers/login.js:11:7)
at Query.Sequence.end (/var/www/html/example.com/public/node_modules/mysql/lib/protocol/sequences/Sequence.js:85:24)
at Query._handleFinalResultPacket (/var/www/html/example.com/public/node_modules/mysql/lib/protocol/sequences/Query.js:144:8)
at Query.EofPacket (/var/www/html/example.com/public/node_modules/mysql/lib/protocol/sequences/Query.js:128:8)
at Protocol._parsePacket (/var/www/html/example.com/public/node_modules/mysql/lib/protocol/Protocol.js:280:23)
at Parser.write (/var/www/html/example.com/public/node_modules/mysql/lib/protocol/Parser.js:74:12)

原因

「Can't set headers after they are sent」とありそのままでした・・・
別の箇所で既に別のjsonをレスポンスを返していました

javascript

router.get("/", function(req, res, next) {
    db.query("select * from users", function(err, rows) {
        if (!err) {
            res.json(rows);// ★ココで落ちる
        }
    });

    // 何か処理してjsonを返してた
    ・・・
    res.json({・・・});
});

以上です