Ich versuche eine App mit Node.js, Express und Socket.io auf IBM Bluemix zu erstellen Ich verwende EJS als Motor ansehen. Dies ist der relevante Teil meines Codes -Die Verwendung von Socket.io mit EJS verursacht den Fehler "Header können nach dem Senden nicht gesetzt werden"
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);
Nun, wenn ich auf localhost navigieren: 3000, ich den Fehler
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)
Aus dem Protokoll erhalten, kann ich sehen, dass ‚Index‘ genannt wurde zweimal, gefolgt von dem Fehler. Allerdings, wenn ich diese Zeile entfernen -
Es funktioniert gut. Ich habe andere Fragen gelesen, die erwähnen, dass das wiederholte Aufrufen von *** -Funktionen mehr als einmal dieses Problem verursachen könnte. Meine Vermutung ist, dass das Konstruieren von socket.io über den Server etwas verursacht.
Versions:
socket.io: 2.0.4
express: 4.6.2
ejs 2.5.7
node: 6.9.0
EDIT
Nach dem Kommentieren/uncommenting alle Module, habe ich die Ursache hier, an der Spitze meiner app
require('appmetrics-dash').attach();
require('appmetrics-prometheus').attach();
'return res.render ('Index');' return nicht –
@RIYAJKHAN Entfernen der Rückkehr bewirkt, dass der gleiche Fehler –