私は、非同期ルートのラップ関数を持つためにstrongloop https://strongloop.com/strongblog/async-error-handling-expressjs-es7-promises-generators/からこのトリックを試していますが、エラー関数は呼び出されません。私はまた、エラー関数をauthRouterファイルの中に入れようとしました。 authRouter.jsでexpress 4の非同期ラップ関数はエラーをキャッチしません
:
let wrap = fn => (...args) => fn(...args).catch(args[2]);
router.post('/login', wrap(async (req,res) => {
if (!req.body.email || !req.body.password) throw new Errors.BadRequestError();
}));
export default router;
とapp.js
app.use('/auth', authRouter);
app.use(function(err, req, res) {
console.log('in here');
const status = err.status || 500;
if (status === 500) console.log(err);
res.status(status);
res.send({
message: err.message,
error: err
});
});
エラーハンドラは4つのパラメータを持つ必要があると思いますが、それは可能でしょうか? – Bergi
これは最後のエラーハンドラではありません。next()を呼びたくありません。 – arisalexis