Sentry 集成
集成 Sentry 监控 Supabase 客户端的错误
您可以使用 Sentry 来监控来自 Supabase JavaScript 客户端抛出的错误。安装 Supabase Sentry 集成 即可开始使用。
该 Sentry 集成支持浏览器、Node 和边缘环境。
安装
使用您的包管理器安装 Sentry 集成:
1npm install @supabase/sentry-js-integration
使用方法
如果您使用的是 Sentry JavaScript SDK v7,请参考 supabase-community/sentry-integration-js
仓库。
要使用 Supabase Sentry 集成,请在初始化 Sentry 客户端时将其添加到 integrations
列表中。
您可以提供 Supabase Client 的构造函数,也可以提供一个已经初始化的 Supabase Client 实例。
1234567891011121314import * as Sentry from '@sentry/browser'import { SupabaseClient } from '@supabase/supabase-js'import { supabaseIntegration } from '@supabase/sentry-js-integration'Sentry.init({ dsn: SENTRY_DSN, integrations: [ supabaseIntegration(SupabaseClient, Sentry, { tracing: true, breadcrumbs: true, errors: true, }), ],})
所有可用的配置选项可以在我们的 supabase-community/sentry-integration-js
仓库中找到。
消除重复的 spans
如果您已经在 Sentry 中监控 HTTP 错误(例如使用 HTTP、Fetch 或 Undici 集成),您可能会为 Supabase 调用获取重复的 spans。您可以通过在其他集成中跳过这些调用来消除重复:
123456789101112131415161718192021222324252627282930313233343536373839404142434445import * as Sentry from '@sentry/browser'import { SupabaseClient } from '@supabase/supabase-js'import { supabaseIntegration } from '@supabase/sentry-js-integration'Sentry.init({ dsn: SENTRY_DSN, integrations: [ supabaseIntegration(SupabaseClient, Sentry, { tracing: true, breadcrumbs: true, errors: true, }), // @sentry/browser Sentry.browserTracingIntegration({ shouldCreateSpanForRequest: (url) => { return !url.startsWith(`${SUPABASE_URL}/rest`) }, }), // 或 @sentry/node Sentry.httpIntegration({ tracing: { ignoreOutgoingRequests: (url) => { return url.startsWith(`${SUPABASE_URL}/rest`) }, }, }), // 或 @sentry/node 支持 Fetch Sentry.nativeNodeFetchIntegration({ ignoreOutgoingRequests: (url) => { return url.startsWith(`${SUPABASE_URL}/rest`) }, }), // 或 @sentry/WinterCGFetch 用于 Next.js 中间件和边缘函数 Sentry.winterCGFetchIntegration({ breadcrumbs: true, shouldCreateSpanForRequest: (url) => { return !url.startsWith(`${SUPABASE_URL}/rest`) }, }), ],})
Next.js 配置示例
以下是一个覆盖浏览器、服务器和边缘环境的 Next.js 配置示例。首先,通过 Sentry Next.js 向导生成基础 Next.js 配置。然后使用适当的过滤器将 Supabase Sentry 集成添加到所有 Sentry.init
调用中。
12345678910111213141516171819202122232425import * as Sentry from '@sentry/nextjs'import { SupabaseClient } from '@supabase/supabase-js'import { supabaseIntegration } from '@supabase/sentry-js-integration'Sentry.init({ dsn: SENTRY_DSN, integrations: [ supabaseIntegration(SupabaseClient, Sentry, { tracing: true, breadcrumbs: true, errors: true, }), Sentry.browserTracingIntegration({ shouldCreateSpanForRequest: (url) => { return !url.startsWith(`${process.env.NEXT_PUBLIC_SUPABASE_URL}/rest`) }, }), ], // 生产环境中调整此值,或使用 tracesSampler 获得更精细的控制 tracesSampleRate: 1, // 将此选项设为 true 会在设置 Sentry 时向控制台打印有用信息 debug: true,})
配置完成后,构建您的应用 (npm run build
) 并在本地启动 (npm run start
)。现在当您发起 supabase-js 请求时,可以在终端看到记录的事务日志。