Sentry Pages Plugin 捕获并记录 Pages Functions 执行链中其下方发生的所有异常。因此建议在应用根目录的 functions/_middleware.ts 中作为第一个 Plugin 安装此 Plugin。
npm i @cloudflare/pages-plugin-sentryyarn add @cloudflare/pages-plugin-sentrypnpm add @cloudflare/pages-plugin-sentrybun add @cloudflare/pages-plugin-sentryimport sentryPlugin from "@cloudflare/pages-plugin-sentry";
export const onRequest: PagesFunction = sentryPlugin({
dsn: "https://sentry.io/welcome/xyz",
});此 Plugin 使用 Toucan ↗。请参阅 Toucan README 查看可用选项 ↗。context、request 和 event 会自动填充,不应手动配置。
如果 DSN ↗ 存储为环境变量或 KV 中,可以这样访问:
import sentryPlugin from "@cloudflare/pages-plugin-sentry";
export const onRequest: PagesFunction<{
SENTRY_DSN: string;
}> = (context) => {
return sentryPlugin({ dsn: context.env.SENTRY_DSN })(context);
};import sentryPlugin from "@cloudflare/pages-plugin-sentry";
export const onRequest: PagesFunction<{
KV: KVNamespace;
}> = async (context) => {
return sentryPlugin({ dsn: await context.env.KV.get("SENTRY_DSN") })(context);
};如果需要为 Sentry 设置附加上下文(例如用户信息或额外日志),请在执行链中 Plugin 下方的任何 Function 中使用 data.sentry 实例。
例如,可以访问 data.sentry 并设置用户信息:
import type { PluginData } from "@cloudflare/pages-plugin-sentry";
export const onRequest: PagesFunction<unknown, any, PluginData> = async ({
data,
next,
}) => {
// Authenticate the user from the request and extract user's email address
const email = await getEmailFromRequest(request);
data.sentry.setUser({ email });
return next();
};完整功能列表请参阅 Toucan 文档 ↗。