GCP の Cloud Run で動く Nuxt3 に GA (グーグルアナリティクス) を設定する
概要
GCP (Google Cloud Platform) の Cloud Run で動作している Nuxt3 アプリにグーグルアナリティクスを設定しようとしたのですが、環境変数まわりで詰まってしまったので記録しておきます。
事前に Cloud Run へのデプロイや、サイトのグーグルアナリティクスの設定は終わっていて、測定ID(トラッキングID)を取得しているという前提で話を進めます。
環境
$ node --version
v16.15.0
$ yarn --version
1.22.18
package.json (必要なものだけです)
{
"devDependencies": {
"nuxt": "3.0.0-rc.3",
"vue-gtag-next": "^1.14.0"
},
}
問題内容
Nuxt3 のリファレンスでは、グーグルアナリティクスの設定に vue-gtag-next を使っていたました。
リファレンス:
もちろんこのリファンスの通りに進めればすぐにできるのですが、
トラッキングIDをgit管理下に入れたくなかったので、Nuxt3 の環境変数として使うように設定したいです。
また、途中 Cloud Run へのデプロイ時に環境変数を渡すことができなかったので、その問題も解決しようとしました。
設定手順
ローカルでの設定
-
vue-gtag-nextをインストールyarn add --dev vue-gtag-next -
.envにGA(グーグルアナリティクス)の測定IDを追記(環境変数名は
NUXT_PUBLIC_をつけるようにしてください)。NUXT_PUBLIC_GA_ID=G-XXXXXXXXXX -
nuxt.config.tsの設定.envの環境変数を読み込みます。runtimeConfig以下を追記してください。環境変数の
NUXT_PUBLIC_以下を変更した場合は、NUXT_PUBLIC_以下を lowerCamelCase に変更した変数名を記入してください。値は
''で大丈夫です(nuxt.config.tsが自動で読み込んでくれます)。... export default defineNuxtConfig({ ..., runtimeConfig: { public: { gaId: '' } }, ..., }) -
plugins/vue-gtag.client.tsを作成し、次のようにします。(js でも大丈夫です)
// plugins/vue-gtag.client.ts import VueGtag from 'vue-gtag-next' export default defineNuxtPlugin((nuxtApp) => { const config = useRuntimeConfig() nuxtApp.vueApp.use(VueGtag, { property: { id: config.public.gaId } }) })const config = useRuntimeConfig()とすることで nuxt での runtimeConfig を読み込み、config.public.gaIdで先ほどのnuxt.config.tsで作成した変数を読み込んでくれます (変数名を変更した場合は適宜変更してください) 。
ディレクトリでの作業はここで終わりです。
適宜ビルド・デプロイ等をしてください。
これで yarn dev では値を読み込んでくれるのですが、Cloud Run では測定IDを読み込んでくれません。
試行錯誤した結果、 Cloud Run 側で環境変数を設定すればいいことがわかりました。
Cloud Run での設定
-
Cloud Run で環境変数を設定します。
.envで書いた変数と測定IDを入力します。記入後
デプロイを押します。
これで Cloud Run 上でも環境変数を読み込んでくれるようになりました。
結果
グーグルアナリティクスで無事測定できるようになりました!

終わりに
今回は Cloud Run で動く Nuxt3 でグーグルアナリティクスの設定をすることができました。
読んでくださりありがとうございました。
Discussion