我尝试使用Express开发NodeJS应用程序。 这里是我的代码NodeJS,Express,MySQL - 发送后无法设置标题
app.post('/open', checkStatus, function(req, res) {
if (req.error) {
console.log(req.log);
return res.json(req.error);
}
console.log(currentDate() + colors.gray('>> ') + colors.bold(colors.cyan(req.method)) + ' ' + colors.green('200') + ' ' + req.url);
var data = req.body;
status.door.isOpening = true;
setUser(data, function() {
setOpening(data, function() {
openTheDoorPlease(data, function(response, log) {
if (status.door.isOpening) {
status.door.isOpening = false;
console.log(log);
return res.json(response);
}
});
});
});
});
和这里的错误
throw err; // Rethrow non-MySQL errors
^
Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:346:11)
at ServerResponse.header (/Users/yourmajesty/Sites/arduino-test/server/node_modules/express/lib/response.js:719:10)
at ServerResponse.send (/Users/yourmajesty/Sites/arduino-test/server/node_modules/express/lib/response.js:164:12)
at ServerResponse.json (/Users/yourmajesty/Sites/arduino-test/server/node_modules/express/lib/response.js:250:15)
at Query.<anonymous> (/Users/yourmajesty/Sites/arduino-test/server/server.js:179:22)
at Query.<anonymous> (/Users/yourmajesty/Sites/arduino-test/server/server.js:255:50)
at Query.<anonymous> (/Users/yourmajesty/Sites/arduino-test/server/server.js:276:42)
at Query._callback (/Users/yourmajesty/Sites/arduino-test/server/server.js:321:46)
at Query.Sequence.end (/Users/yourmajesty/Sites/arduino-test/server/node_modules/mysql/lib/protocol/sequences/Sequence.js:85:24)
at Query._handleFinalResultPacket (/Users/yourmajesty/Sites/arduino-test/server/node_modules/mysql/lib/protocol/sequences/Query.js:144:8)
实际上,当URL“/打开”被调用POST方法,第一次,一切正常。但第二次,我有这个错误。 我找到的所有答案都是关于return
的。
整个代码可以在这里找到:https://gist.github.com/fcordillot/48428cfccc260635672b9e27d86b5d07
任何人都可以帮我吗?
'status.door.isOpening = true;'看起来像是在服务器上设置全局数据。这真的是你打算做的 - 更改所有用户看到并使用的所有请求的数据? – jfriend00
你的代码中的这行代码在哪里抛出错误; //反思非MySQL错误'?你告诉我们这就是发源地,但你不会向我们展示与之相关的代码。这就是我们需要看到的。 – jfriend00
另外,您的请求处理程序具有不发送任何响应的代码路径。这也是不正确的。 – jfriend00