Nuxt3のSPAモードでRuntimeConfigにアクセスできない

runtimeConfigの設定

nuxt3 SPAモードを利用してLINE Frontend Framework(LIFF)アプリを制作している際、runtime Configにアクセスできない問題に遭遇しました。

今回はこの問題の解決方法についてお伝えします。

起こった問題

Nuxt3, SPAモードプロジェクトでruntimeConfig(ランタイムコンフィグ)からliffIdを取得できない問題に遭遇しました。

nuxt.config.ts

/* nuxt.config.ts */

export default defineNuxtConfig({
  runtimeConfig: {
    liffId: 'your-liff-id'
  },
 },
 ssr: false
})

middleware/liff-init.global.ts

/* middleware/liff-init.global.ts */

import liff from '@line/liff';

export default defineNuxtRouteMiddleware(async() => {

    const config = useRuntimeConfig();
    const liffId = config.liffId;

    if (liff.isInClient()) {
      await liff.init({ liffId });
    }
});

問題の解決方法

この問題は、ClientサイドでruntimeConfigが参照できるように設定されていないことが原因で起こります。

公式のドキュメントにpublic内のkeyはclient-sideにも公開されると記載があります。

ということで下記のように設定をし直すと上手く取得できるようになります。

nuxt.config.ts

/* nuxt.config.ts */

export default defineNuxtConfig({
  runtimeConfig: {
    public:{ // publicの中でconfigを指定する
      liffId: 'your-liff-id'
    }
  }
 },
 ssr: false
})

middleware/liff-init.global.ts

/* middleware/liff-init.global.ts */

import liff from '@line/liff';

export default defineNuxtRouteMiddleware(async() => {

    const config = useRuntimeConfig();
    const liffId = config.public.liffId; /* public配下に */

    if (liff.isInClient()) {
      await liff.init({ liffId });
    }
});

参照リンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です