自定义错误处理器
使用全局错误处理器自定义错误响应。
error.ts
import { defineErrorHandler } from "nitro";
export default defineErrorHandler((error, _event) => {
return new Response(`Custom Error Handler: ${error.message}`, {
status: 500,
headers: { "Content-Type": "text/plain" },
});
});
这个示例展示了如何拦截所有错误并返回自定义的响应格式。当任何路由抛出错误时,Nitro 会调用你的错误处理器,而不是返回默认的错误页面。
错误处理器
在项目根目录下创建一个 error.ts 文件来定义全局错误处理器:
error.ts
import { defineErrorHandler } from "nitro";
export default defineErrorHandler((error, _event) => {
return new Response(`自定义错误处理器: ${error.message}`, {
status: 500,
headers: { "Content-Type": "text/plain" },
});
});
该处理器接收抛出的错误和 H3 事件对象。你可以使用事件对象访问请求详情,如请求头、Cookie 或 URL 路径,以针对不同路由自定义响应。
触发错误
主处理器抛出一个错误,以演示自定义错误处理器:
server.ts
import { defineHandler, HTTPError } from "nitro/h3";
export default defineHandler(() => {
throw new HTTPError("示例错误!", { status: 500 });
});
当你访问该页面时,不会看到通用的错误页面,而是看到“自定义错误处理器: 示例错误!”,因为错误处理器拦截了抛出的错误。