Next.js里怎么全局捕获API路由的错误?
我在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: '服务器开小差了' });
}
}
_error.js里处理全局错误。把下面代码扔到 pages/api/_error.js 里:然后在你的API路由里啥都不用改,直接让错误冒泡就行。这下偷懒和优雅都有了。