自定义错误处理器

使用全局错误处理器来自定义错误响应。

error.ts
nitro.config.ts
package.json
server.ts
tsconfig.json
vite.config.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";

export default defineHandler(() => {
  throw new HTTPError("示例错误!", { status: 500 });
});

当你访问该页面时,你将看到“自定义错误处理器:示例错误!”的信息,而不是一个通用的错误页面,因为错误处理器拦截了抛出的错误。

#了解更多