Koa 内核会自动把中间件的错误交给 ctx.onerror 处理,因此这个中间件我感觉没必要写了(除非要自定义这个默认的错误处理逻辑)。 监听app.on('error') 如果所有中间件都没有捕获到某个异常,那么co会捕获到。co会调用context对象的onerror, 从而做一些处理(例如返回给浏览器500错误),同时触发 app.onerror 因此,在...
npm install koa-onerror Usage constfs=require('fs');constKoa=require('koa');const{onerror}=require('koa-onerror');constapp=newKoa();onerror(app);app.use(ctx=>{// foo();ctx.body=fs.createReadStream('not exist');}); Options ...
varerr =newError(msg); err.status = status; throwerr;// 包装后再抛出,ctx.onerror才能正确响应错误码给浏览器,否则都是500 因此 中间件 中你调用 this.throw 函数实际上就是真的 throw 了一个异常,最终会导致 co 异常。 由于前文讲到的 Koa co 错误捕获机制(co–>catch–>ctx.onerror–>app.onerro...
其实这不是一个问题,因为就 koa2 而言,他已经帮我做好了统一错误处理入口 app.onerror 方法。我们只要覆盖这个方法,就可以统一处理包括 中间件,事件,流 等出现的错误。但我们始终会看到 UnhandledPromiseRejectionWarning: 类型的错误。当然,这不一定就是 koa 导致,有可能是其他异步未处理错误导致的,但这都不重要...
koa全局处理异常 AI检测代码解析 // handle error app.on('error', async (err, ctx, next) => { // TODO logger errStack console.log(err.message); let errStruct = { errCode: -20221, alert: '服务忙,请稍等(-20221)' } ctx.res.writeHead(200,{ ...
const app = new Koa(); app.use(async (context) => { context.body = 'hello Koa' }); app.listen(3000); console.log('服务正在启动,端口号为:3000'); 1. 2. 3. 4. 5. 6. 7. 8. 9. 执行命令:node app.js。然后在浏览器中打开http://localhost:3000/,页面显示:hello Koa。
app.use(staticServer(path.join(__dirname, 'static'))); koa-router koa-router是一个路由中间件,用法如下: const router = require('koa-router')(); // 监听url请求 router.get('/list', function *() { // ... }); router.post('/user/register', function *() { ...
onerror : function(err){ //some code this.app.emit('error', err, this); //some code} 此外,在 Context 模块中,还将 request 对象和 response 对象的一些方法和属性委托给了 context 对象://response委托delegate(proto, 'response') .method('attachment') .method('append') .access...
Koa 有 error 事件,当发生错误时,可以通过该事件,对错误进行统一的处理。 varKoa=require('koa');varapp =Koa(); app.on('error',function(err,ctx){console.log(err); }); app.listen(3000); 上面这段代码在如果捕获到错误,页面会打印出 “Internal Server Error” (这是Koa对错误的默认处理)。这个错...
use 就是注册中间件,on 就是监听错误,listen 就是启动服务。 const Koa = require("koa");const app = new Koa();app.use(async (ctx, next) => {ctx.body = "Hello kaimo Koa";});app.on("error", (err) => {console.log(err);});app.listen(3000); ...