Next.js里怎么全局捕获API路由的错误?

UI茜茜 阅读 3

我在Next.js项目里写了个API路由,但有时候数据库连不上会直接返回500页面,想统一处理这类错误,试过在middleware里catch但好像不生效?

比如下面这个简单的API路由,出错时能不能自动返回JSON格式的错误信息而不是白屏?

export default async function handler(req, res) {
  try {
    const data = await fetchDataFromDB(); // 可能抛错
    res.status(200).json(data);
  } catch (err) {
    // 这里每个文件都写太麻烦了,有没有全局方式?
    res.status(500).json({ error: '服务器开小差了' });
  }
}
我来解答 赞 3 收藏
二维码
手机扫码查看
1 条解答
Prog.星星
最简单的办法就是在 _error.js 里处理全局错误。把下面代码扔到 pages/api/_error.js 里:

export default function handleError(err, req, res) {
console.error(err);
res.status(500).json({ error: '服务器开小差了,请稍后再试' });
}


然后在你的API路由里啥都不用改,直接让错误冒泡就行。这下偷懒和优雅都有了。
点赞
2026-03-30 22:00