我在 express 中有一个异步中间件,因为我想在其中使用 await 来清理我的代码。const express = require('express');const app = express();app.use(async(req, res, next) => {...
我 async
在 express 中有一个中间件,因为我想 await
在其中使用它来清理我的代码。
const express = require('express');
const app = express();
app.use(async(req, res, next) => {
await authenticate(req);
next();
});
app.get('/route', async(req, res) => {
const result = await request('http://example.com');
res.end(result);
});
app.use((err, req, res, next) => {
console.error(err);
res
.status(500)
.end('error');
})
app.listen(8080);
问题是,当它拒绝时,它不会转到我的错误中间件,但如果我删除关键字 async
并且 throw
进入中间件,它就会转到。
app.get('/route', (req, res, next) => {
throw new Error('Error');
res.end(result);
});
因此,我不是 UnhandledPromiseRejectionWarning
进入错误处理中间件,而是让错误冒泡,并快速处理它?
好吧,我找到了这个 - https://github.com/davidbanham/express-async-errors/ ,然后需要脚本,你就可以开始了
const express = require('express');
require('express-async-errors');