发送后无法设置标题
我正在使用节点版本0.10.3和Express 3.1.1。
我试图返回一个简单的回应,但我收到以下错误:
http.js:692 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.js:692:11)
我已经读了很多,并尝试了很多解决scheme,但我仍然得到这个错误。 我已经使用节点检查器,我得到了该行后的错误 –
res.render('index', { title: 'Express' });
app.js:
/** * Module dependencies. */ var express = require('express') , http = require('http') , path = require('path') , socketio = require('socket.io'); var app = express() , server = http.createServer(app) , io = socketio.listen(server); app.configure(function(){ app.set('port', process.env.PORT || 3000); app.set('views', __dirname + '/views'); app.set('view engine', 'hjs'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(app.router); app.use(express.static(path.join(__dirname, 'public'))); }); app.configure('development', function(){ app.use(express.errorHandler()); }); server.listen(app.get('port'), function(){ console.log("Express server listening on port " + app.get('port')); }); io.configure('production', function(){ io.enable('browser client etag'); io.set('log level', 1); }); io.configure('development', function(){ io.set('log level', 1); }); io.sockets.on('connection', function(socket) { socket.on('event', function(event) { socket.join(event); }); }); require('./routes')(app, io);
路线/ index.js:
var utils = require('../utils') , config = require('../config') , io; module.exports = function(app, socketio) { io = socketio; app.get('/', index); }; var index = function(req, res){ res.render('index', { title: 'Express' }); };
意见/ index.hjs:
<!DOCTYPE html> <html> <head> <title>{{ title }}</title> <link rel='stylesheet' href='/stylesheets/style.css' /> </head> <body> <h1>{{ title }}</h1> <p>Welcome to {{ title }}</p> </body> </html>
的package.json:
{ "name": "blabla", "version": "0.0.1", "private": true, "scripts": { "start": "app.js" }, "dependencies": { "express": "3.0.3", "hjs": "0.0.4", "cradle": "0.6.4", "twiliosig": "0.0.1", "socket.io": "0.9.11" }, "subdomain": "blabla", "engines": { "node": "0.6.x" } }
任何线索?
似乎是您的socket.io版本的错误。
用这个:
"dependencies": { "express": "3.0.x", "hjs": "0.0.4", "cradle": "0.6.4", "twiliosig": "0.0.1", "socket.io": "0.9.x" }
经testingsocket.io@0.9.16