پرش به مطلب اصلی

جاوااسکریپت (مرورگر)

با @sentry/browser، @sentry/react، @sentry/vue، @sentry/nextjs، @sentry/angular و مانند این‌ها کار می‌کند؛ همه هستهٔ گزینه‌های یکسانی دارند.

نصب​

npm install @sentry/browser
# یا بستهٔ فریم‌ورک: @sentry/react، @sentry/vue، @sentry/nextjs …

مقداردهی اولیه​

init را هرچه زودتر — پیش از رندر برنامه — صدا بزنید.

import * as Sentry from "@sentry/browser";

Sentry.init({
dsn: "https://<public_key>@<your-errora-host>/<project_id>",
environment: import.meta.env.MODE,
release: `web@${__APP_VERSION__}`,

// ردیابی کارایی
integrations: [
Sentry.browserTracingIntegration(),
Sentry.replayIntegration(),
Sentry.feedbackIntegration({ colorScheme: "system", showBranding: false }),
],
tracesSampleRate: 0.2,
tracePropagationTargets: ["localhost", /^https:\/\/api\.example\.com/],

// بازپخش نشست
replaysSessionSampleRate: 0.1, // ۱۰٪ نشست‌های عادی
replaysOnErrorSampleRate: 1.0, // همهٔ نشست‌هایی که به خطا خورده‌اند

// لاگ ساخت‌یافته
_experiments: { enableLogs: true },

sendDefaultPii: false,
});

هر بخش چه چیزی را روشن می‌کند​

سیاست امنیت محتوا (CSP)​

اگر سایت شما هدر CSP می‌فرستد، میزبان ارورا را در connect-src مجاز کنید:

Content-Security-Policy: connect-src 'self' https://<your-errora-host>;

همان‌جا که سیاست را ویرایش می‌کنید، report-uri را هم به ارورا بدهید تا تخلف‌ها به خطا تبدیل شوند: گزارش سیاست امنیتی.

ثبت دستی​

try {
risky();
} catch (err) {
Sentry.captureException(err, { tags: { area: "checkout" } });
}

Sentry.captureMessage("Cart total mismatch", "warning");

Sentry.setUser({ id: "42", username: "nima" });
Sentry.addBreadcrumb({ category: "ui", message: "Clicked pay", level: "info" });

سورس‌مپ​

فریم‌های مینیفای‌شده بدون سورس‌مپ بی‌فایده‌اند. نقشه‌ها را برای هر نسخه از CI بفرستید:

curl -X POST "$ERRORA/api/v1/projects/$PROJECT_ID/release-files" \
-H "Authorization: Bearer $ERRORA_TOKEN" \
-F "release=web@1.4.2" \
-F "name=~/assets/app.4f2c.js.map" \
-F "sourcemap=1" \
-F "file=@dist/assets/app.4f2c.js.map"

راهنمای کامل: سورس‌مپ و نسخه‌ها.

مسدودکننده‌های تبلیغات و تونل‌کردن​

بعضی مسدودکننده‌ها درخواست‌هایی را که در مسیرشان sentry هست بلوکه می‌کنند. اگر رویدادها فقط در مرورگر گم می‌شوند، با گزینهٔ tunnel در SDK آن‌ها را از دامنهٔ خودتان عبور دهید: یک نقطهٔ واسط کوچک روی سرور خودتان که بدنه را به https://<your-errora-host>/api/<project_id>/envelope/ فوروارد می‌کند. ارورا DSN را از سربرگ پاکت می‌خواند، پس پاکت‌های تونل‌شده درست احراز می‌شوند.

بررسی نهایی​

Sentry.captureException(new Error("Errora smoke test"));

صفحهٔ خطاها را باز کنید؛ خطا باید ظرف چند ثانیه آنجا باشد و اگر نمونه‌برداری بازپخش آن را گرفته باشد، ضبط نشست هم به آن پیوست است.