노드 js를 사용 중입니다. 또한 다른 제 3 자 코랩 URL을 요청하고 있습니다.Nodejs + 보낸 후 헤더를 설정할 수 없습니다.
이 코드를 실행하면 오류가 발생합니다. 보낸 후 헤더를 설정할 수 없습니다.
돈을 내가 잘못했는지 알아.
FYR : https://github.com/mcollina/node-coap
코드 :
var app = require('express');
var router = app.Router();
var coap = require('coap');
var Q = require('q');
router.get('/test', function(req, res, next) {
var result = {
resp : {},
};
Q(result).then(function(result) {
var deferred = Q.defer();
var coapConnection = {
host : 'abcd.com',
pathname : '/get',
method : 'GET',
port : '5683',
confirmable : true
};
var req = coap.request(coapConnection);
req.write(JSON.stringify(result.body));
req.on('response', function(response) {
var d = response.payload;
result.resp.response = JSON.parse(d.toString('utf8'));
deferred.resolve(result);
response.pipe(process.stdout);
response.on('end', function() {
//process.exit(0);
res.send(result.resp);
});
});
req.end();
return deferred.promise;
}).then(function(result) {
result.resp.status = 'Success';
res.send(result.resp.response);
}).fail(function(result) {
result.resp.status = 'Error';
res.send(result.resp);
});
});
module.exports = router;
ERROR :
throw new Error('Can\'t set headers after they are sent.');
^
Error: Can't set headers after they are sent.
at ServerResponse.OutgoingMessage.setHeader (_http_outgoing.js:335:11)
at ServerResponse.res.set.res.header (test/node_modules/express/lib/response.js:524:10)
at ServerResponse.res.json (test/node_modules/express/lib/response.js:189:36)
at ServerResponse.res.send (test/node_modules/express/lib/response.js:118:21)
at IncomingMessage.<anonymous> (test/routes/coap/trigger.js:111:9)
at IncomingMessage.emit (events.js:129:20)
at endReadableNT (test/node_modules/coap/node_modules/readable-stream/lib/_stream_readable.js:865:12)
at afterTickTwo (test/node_modules/coap/node_modules/readable-stream/node_modules/process-nextick-args/index.js:27:10)
at process._tickCallback (node.js:355:11)
사람이이 문제에 대한 해결책을주십시오. 감사합니다. .