代码如下
var http=require('http'),
connect=require('connect');
var app = connect();
app.use(function(req,res,next){
res.write('connecta');
next();
});
app.use(function(req,res){
res.end('hello res end!');
})
http.createServer(app)
.listen(80);
然后一直提示cant set headers after they are sent 是不是第二个中间件又writeheader了 怎么避免呢?
15 回复
在Connect的源码中proto.js中有一段if(!layer || res.headerSent)中在你调用res.write()后这里面就有值了,就会继续执行下去,就会执行到
else {
debug('default 404');
res.statusCode = 404;
res.setHeader('Content-Type', 'text/plain');
if ('HEAD' == req.method) return res.end();
res.end('Cannot ' + req.method + ' ' + utils.escape(req.originalUrl));
}
这里就会出现问题了