node koa读文件遇到的坑

本文探讨了在Koa框架中使用fs.readFile进行异步文件读取时遇到的问题,通过Promise处理异步流程,确保数据正确返回。文章提供了具体的代码示例和解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值