1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| // 非同期エラーをキャッチするラッパー
const asyncHandler = (fn) => (req, res, next) => {
Promise.resolve(fn(req, res, next)).catch(next);
};
app.get('/users/:id', asyncHandler(async (req, res) => {
const user = await fetchUser(req.params.id);
res.json(user);
}));
// エラーハンドリングミドルウェア
app.use((err, req, res, next) => {
console.error(err.stack);
if (err instanceof TypeError) {
return res.status(400).json({
error: 'Invalid data format',
message: err.message
});
}
res.status(500).json({ error: 'Internal server error' });
});
|