我会保持代码简单,但基本上,我有一个运行Express的Node.js服务器。 Express使用pooling(以及mysql npm包)连接到MySQL数据库。这就是我的服务器的样子(我省略了无聊的要求以及如何保持这一点)。这是服务器处理的唯一路由。
server.all('/test', function (req, res, next) {
pool.getConnection(function (err, conn) {
if (err) {
console.log(err);
}
else {
conn.query("select * from spwp_appusers where id=46", function (err, rows) {
conn.release();
if (err) {
console.log(err);
}
else {
res.send(200);
}
});
}
});
next();
});
但是,当我运行此代码时,服务器会尝试执行res.send(200);
但会中断并出现以下错误:
/usr/lib/node_modules/mysql/lib/protocol/Parser.js:77
throw err; // Rethrow non-MySQL errors
^
Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:335:11)
有谁知道发生了什么?为什么我不能发送回复?即使我使用回调,我也会收到此错误。
答案 0 :(得分:3)
我认为问题出在下一步。尝试更改next();
getConnection()
答案 1 :(得分:0)
上面的错误显示在我的情况下我的mysql用户,密码,db名称不匹配所以请检查你的mysql凭证。
var pool = mysql.createPool({ 主持人:'localhost', 用户:'root', 密码:'', database:'dbname',multipleStatements:true });