Node.js Can';t在发送邮件后设置邮件头
我使用的是节点版本0.10.3和Express 3.1.1 我试图返回一个简单的响应,但出现以下错误:Node.js Can';t在发送邮件后设置邮件头,node.js,express,Node.js,Express,我使用的是节点版本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)
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)
我已经读了很多关于它的书,并且尝试了很多解决方案,但是我仍然犯了这个错误。
我使用了节点检查器,在那一行之后我得到了错误-
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);
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' });
};
<!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>
{
"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"
}
}
routes/index.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);
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' });
};
<!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>
{
"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"
}
}
视图/索引。hjs:
/**
* 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);
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' });
};
<!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>
{
"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"
}
用插座测试。io@0.9.16您发布的代码似乎没有问题(我也在本地进行了测试,工作正常)。在相同版本的node.js和express下?是的,相同版本。我没有在你的代码中看到任何明显的可能导致你的问题的东西。看起来有些模块在调用索引函数之前发送了头。您是否尝试注释掉所有不必要的模块(大多数app.use调用、io部分等)以查找导致您出现问题的模块?我只尝试保留:app.set('port',process.env.port | 3000);app.set('views','u dirname+'/views');应用程序集(“查看引擎”、“hjs”);在我的app.use中。不过,当我导航到localhost:3000时,问题还是一样。。奇怪的是,现在它确实加载了CSS文件(但仍然抛出该错误)