IBM Bluemix에서 Node.js, Express 및 Socket.io로 앱을 만들려고합니다. EJS를 사용하고 있습니다. 뷰 엔진. 이것은 관련 내 코드의 일부이다 - 나는 로컬 호스트로 이동하는 경우 이제EJS에서 Socket.io를 사용하면 "보낸 후 헤더를 설정할 수 없습니다"라는 오류가 발생합니다.
const express = require('express');
const app = express();
//copied from socket.io tutorial
const http = require('http').Server(app);
const io = require('socket.io')(http);
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, '../templates'));
...
app.get('/', function (req, res) {
logger.info('index');
return res.render('index');
});
...
const port = process.env.PORT || localConfig.port;
http.listen(port);
: 3000, 내가 로그에서 오류
Error: Can't set headers after they are sent.
at validateHeader (_http_outgoing.js:489:11)
at ServerResponse.setHeader (_http_outgoing.js:496:3)
at ServerResponse.header (/home/aniket/Documents/HumbleHelper/node_modules/express/lib/response.js:767:10)
at ServerResponse.contentType (/home/aniket/Documents/HumbleHelper/node_modules/express/lib/response.js:595:15)
at ServerResponse.send (/home/aniket/Documents/HumbleHelper/node_modules/express/lib/response.js:145:14)
at done (/home/aniket/Documents/HumbleHelper/node_modules/express/lib/response.js:1004:10)
at tryHandleCache (/home/aniket/Documents/HumbleHelper/node_modules/ejs/lib/ejs.js:228:10)
at View.exports.renderFile [as engine] (/home/aniket/Documents/HumbleHelper/node_modules/ejs/lib/ejs.js:437:10)
at View.render (/home/aniket/Documents/HumbleHelper/node_modules/express/lib/view.js:135:8)
at tryRender (/home/aniket/Documents/HumbleHelper/node_modules/express/lib/application.js:640:10)
을 얻을, 나는 '인덱스'가 호출 된 것을 알 수 있습니다 두 번 누른 다음 오류가 발생합니다. 그러나이 줄을 제거하면 -
const io = require('socket.io')(http);
잘 작동합니다. res. *** 함수를 두 번 이상 호출하면이 문제가 발생할 수 있다는 다른 질문을 읽었습니다. 내 생각 엔 서버를 통해 socket.io를 구성하면 무언가가 발생합니다.
버전 :
socket.io : 2.0.4
표현 : 4.6.2
EJS 2.5.7
노드 : 6.9.0
편집
댓글 달기/모든 모듈의 주석을, 나는
require('appmetrics-dash').attach();
require('appmetrics-prometheus').attach();
'반환 res.render ('인덱스');'필요하지 반환 반환을 제거 –
@RIYAJKHAN는 –