Nuxt + TypescriptプロジェクトにSentryを導入する

公開日時

Sentryの導入自体はnuxt-community/sentry-moduleを使うと手軽に導入できる。

yarn add @nuxtjs/sentry

ただ、sourcemapを利用するためにはAPI Tokenの設定が必要だったので対応方法を残しておく。

nuxt.config.tsに以下を設定。

Sentry側でどのリリースか区別できるようにコミットハッシュ(GIT_SHA)を設定しておく。

// nuxt.config.ts
modules: [
  '@nuxtjs/sentry'
],
sentry: {
  dsn: process.env.SENTRY_DSN || '',
  disabled: process.env.NODE_ENV !== 'production',
  publishRelease: true,
  sourceMapStyle: 'hidden-source-map',
  config: {
    release: process.env.GIT_SHA,
    environment: process.env.SENTRY_ENV || 'production',
  }
},
// ...

あとはGithub Actionでデプロイする際に環境変数として以下を設定すればSentry側でsourcemapの表示とリリース管理ができるようになる。

SENTRY_AUTH_TOKENについてはSentryの管理画面でトークンを発行して設定する。

# .github/workflows/deploy.yml
- name: Build
  env:
    NODE_ENV: production
    SENTRY_ENV: production
    SENTRY_DSN: ${{ secrets.SENTRY_DSN }}
    SENTRY_AUTH_TOKEN: ${{ secrets.SENTRY_AUTH_TOKEN }}
    SENTRY_ORG: your_sentry_org
    SENTRY_PROJECT: your_sentry_project
    GIT_SHA: ${{ github.sha }}
  run: yarn run build

参考


Related #nuxt.js

Nuxt.jsアプリケーションをHerokuにデプロイする

pushするだけでデプロイされるので手軽

Github ActionでCloudfrontのキャッシュをクリアする

デプロイ後にキャッシュクリアを行うように設定

NuxtアプリにCloud Functionsを追加したらビルドエラーが発生

CIでのビルドログ抑制を無効化して、functionsディレクトリをビルド対象から外す必要があった

Firebase Hostingで動いているNuxt.jsプロジェクトにAnalyticsを導入する

gaメソッドをinjectするようにした

nuxt-community/proxy-moduleを使ってスタブAPIに切り替える

開発環境はスタブAPIを使うようにした

Nuxt.jsのserverMiddlewareがGAE上だとエラーになる

ディレクトリ位置の問題でserverMiddlewareが動かない現象が発生した