为什么读取文件以后设置总是报错
this.body = data
**Can’t set headers after they are sent. **
11 回复
var _this = this;
fs.readFile(path,'binary',function(err,data){
console.log(data);
if(err)console.log(err)
else{
_this.response.type = 'text/html; charset=utf-8';
_this.response.writeHead(200, 'SUP?', { 'content-type': 'html' });
_this.render(path);
_this.response.body = data; //就是这里
}
});
koa-static
, koa-static-cache
可以满足一般需求了吧。
至于报错原因,是因为在回调结束前就已经结束响应了。 在generator内部,你需要使用yield而非回调
var koa = require('koa')
var app = koa()
var fs = require('co-fs')
app.use(function* (){
this.body = yield fs.readFile('./app.js', 'utf8')
})
app.listen(3000)
你可以试试下面的测试代码 取消注释可以得到响应,否则404
var koa = require('koa')
var app = koa()
var fs = require('fs')
app.use(function* (){
fs.readFile('./app.js', 'utf8', function (e, data) {
console.log(data)
this.body = data
})
// this.body = 'hello'
})
app.listen(3000)