Nuxt.jsでFirebase 9を利用する
2022-03-13
Nuxt.js に Firebase を導入するために Nuxt Firebase というパッケージが用意されていますが,公式ドキュメントをよく見てみると v7.5 から更新されていません.
一方で,Firebase はバージョン8の namespaced 形式からバージョン9の modular 形式へと仕様が変更されています.
現在の Nuxt Firebase の最新バージョンは v8.2.2 ですが,Nuxt Firebase v8+ では modular 形式のサポートとなっています.また,パッケージの実装は終わっていないようで,modular 形式を導入する場合にはパッケージではなく,自分で導入するようにと書かれていました.
インストール
バージョン9の firebase パッケージをインストールします.
terminal
$ yarn add firebase
設定
firebase の初期化は一回のみ行う必要があります.初期化されている状態で初期化の処理を行おうとするとエラーが発生するため,プラグインで実装します.
plugins/firebase.js
import { initializeApp, getApps } from 'firebase/app'
import { getFirestore } from 'firebase/firestore'
import { getAuth } from 'firebase/auth'
const firebaseConfig = {
apiKey: '<replace this>',
authDomain: '<replace this>',
databaseURL: '<replace this>',
projectId: '<replace this>',
storageBucket: '<replace this>',
messagingSenderId: '<replace this>',
appId: '<replace this>',
}
const apps = getApps()
const firebaseApp = !apps.length ? initializeApp(firebaseConfig) : apps[0]
const db = getFirestore(firebaseApp, {})
const auth = getAuth(firebaseApp, {})
export { db }
設定ファイルも編集します.
nuxt.config.js
export default {
...,
// Plugins to run before rendering page: https://go.nuxtjs.dev/config-plugins
plugins: ['~/plugins/firebase.js'],
}
使用方法
プラグインを用意したら,各コンポーネントで読み込むだけです.
<script>
import { auth } from '@/plugins/firebase.js'
import { createUserWithEmailAndPassword } from 'firebase/auth'
export default {
methods: {
async createUser() {
try {
const userCredential = await createUserWithEmailAndPassword(
auth,
this.email,
this.password
)
} catch (e) {
console.error(e)
}
},
},
}
</script>