为什么读取文件以后设置总是报错
this.body = data
**Can’t set headers after they are sent. **
给个完整点的代码
res 调了两次…
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; //就是这里 } });
//_this.render(path) 这个是注释掉的
我只要把 this.body = data. 换成 随便个字符就好了。
@guotingchaopr koa-static 可以么?
koa-static, koa-static-cache可以满足一般需求了吧。
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)
既然用了koa, 就尽量别写回调的代码了…
哦 好的 初学这个框架以后会注意了
非常感谢
@xieren58 嗯 我明白了。是我写的方法不对
CNode 社区为国内最专业的 Node.js 开源技术社区,致力于 Node.js 的技术研究。
给个完整点的代码
res 调了两次…
//_this.render(path) 这个是注释掉的
我只要把 this.body = data. 换成 随便个字符就好了。
@guotingchaopr koa-static 可以么?
koa-static,koa-static-cache可以满足一般需求了吧。至于报错原因,是因为在回调结束前就已经结束响应了。 在generator内部,你需要使用yield而非回调
你可以试试下面的测试代码 取消注释可以得到响应,否则404
既然用了koa, 就尽量别写回调的代码了…
哦 好的 初学这个框架以后会注意了
非常感谢
@xieren58 嗯 我明白了。是我写的方法不对