初学koa,使用app.use中的ctx直接返回html字符串能显示,但是在里面使用fs.readFile,回调中把data赋值给ctx.body,在浏览器上就显示not found
用法1
var app = require('koa')();
var fs = require('fs');
app.use(function *(){
this.body = yield new Promise(function(reso,reje){
fs.readFile(__dirname+'/app.html',function(err,data){
if(err)
reso('error');
else
reso(data.toString());
})
}).then(function(data){
return data
});
})
app.listen(8910);
koa和express不一样 没有处理readFile 异步的中间件 需要自己加异步处理函数
参考下面的链接
https://www.cnblogs.com/gsgs/p/7056658.html
项目使用代码:
router.get('/json', async (ctx, next) => { let jsonData = {} await new Promise((resolve, reject) => { // 读image文件夹 fs.readFile('./data.json', 'utf-8', function (err, json) { if (err) ctx.throw(err) jsonData = json // 将所有的文件夹名字放到外面来。 resolve() // resolve过后,await语句才结束 }) }) ctx.body = jsonData console.log('外层读取到ctx===', ctx.body) })