koa如何处理响应错误?
app.js
const port = 3000;
const Koa = require('koa');
const Ctrl = require('koa-route');
const app = new Koa();
const FileManager = require('./module/file_manager.js');
app.use(Ctrl.get('/api/item_list', async (ctx) => {
ctx.set('Cache-Control', 'no-cache');
ctx.body = await FileManager.getItemList();
}))
app.listen(port);
file_manager.js
const fs = require('fs');
module.exports = {
getItemList() {
return new Promise((res, rej) => {
fs.readFile('./user_info.json', 'utf-8', (err, data) => {
err ? rej(err) : res(data);
})
})
}
}
简单说就是app.js通过file_manager.js读取一个json文件,然后作为响应返回。这样写可以获得正确的响应。
我想问一下,如果需要对错误处理,比如当没有这个文件的时候,ctx.body
响应主体是一个错误信息的json,ctx.status = 404
,该如何写?
初学者,见谅
更改后的app.js,在响应前增加了错误处理
app.use(async (ctx, next) => {
try{
await next();
}catch(e){
console.log(e);
ctx.body = `catch error:${e}`;
}
})
catch到的错误如下
{ Error: ENOENT: no such file or directory, open 'E:\test\wedding_invitation\
ding_invitation\user_info.json'
errno: -4058,
code: 'ENOENT',
syscall: 'open',
path: 'E:\\test\\wedding_invitation\\wedding_invitation\\user_info.json' }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
koa的思路是将所有异步函数按注册顺序包裹成一个壳子:
所以你只要在注册router之前,先注册一个错误处理函数就可以了: