node koa读文件遇到的坑

初学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)
})

猜你喜欢

转载自blog.csdn.net/gwdgwd123/article/details/84099727
今日推荐