Next.js に Sentry を導入してエラーログを収集してみる
https://vectorlogoseek.com/wp-content/uploads/2020/02/sentry-io-vector-logo.png
https://docs.sentry.io/platforms/javascript/guides/nextjs/
初期設定
設定ウィザードを使って設定できる。
code:sh
npx @sentry/wizard -i nextjs
セットアップするとエラーが送信されるサンプルコードも送信される。
Github や Slack への通知はダッシュボードから設定できる。
ただし、 Slack の通知を含めたインテグレーションは無料アカウントではできないよう。
Sourcemap
release artifact にはnext build したらアップロードされた。
https://zenn.dev/koki_tech/articles/fd4afb8ac5c863
ただ、 artifact build には Sentry CLI を使ってはアップロードできたが、いまいち違いがよくわからない。
https://docs.sentry.io/platforms/javascript/sourcemaps/uploading/cli/?original_referrer=https%3A%2F%2Fpersonal-qhw.sentry.io%2F
ただ、 artifact build でソースマップをアップロードしておけば十分なようだ。
もし、 sentry のトークンがない状態でビルドをすると、「ビルドしたこと」だけ通知され、ソースマップはアップロードされない。
認証情報の設定は .stylelintrc だけではなく、他の方法でもできる。
https://docs.sentry.io/product/cli/configuration/
CI でビルドのたびにソースマップがアップロードされるのはどうかな、と考え、私は環境変数がある場合だけ、プラグインを有効にするよう next.config.js を修正した。
SENTRY_AUTH_TOKEN 環境変数は、 CI 側で条件によってセットするようにした。
code:js
if (process.env.SENTRY_AUTH_TOKEN && process.env.SENTRY_AUTH_TOKEN.length > 0) {
// Injected content via Sentry wizard below
const { withSentryConfig } = require('@sentry/nextjs');
// ...
}
Dynamic server usage: headers / cookies などのエラーが検出される
next build したタイミングで、上記のようなエラーが検出された。
https://github.com/vercel/next.js/issues/50634
参考
https://note.com/tabelog_frontend/n/n7f6822ae0c0d