🌟

Nuxt3(というかVue3)とCloud Storage for Firebaseを使ううえで気を付ける些細な事

2024/04/30に公開

問題

ご存じの通り、Vue3では変数をリアクティブにする際、「ref」を使用します。

あれ?

「Cloud Storage for Firebase」でも見ますね、「ref」

例えばアップロード

// ...
const storageRef: StorageReference = ref(getStorage(), fileName);
uploadString(storageRef, dataUrl, 'data_url').then((snapshot) => {
    resolve(true);
}).catch(error => {
    reject(false);
});
// ...

ref(getStorage(), fileName);」

削除も

// ...
deleteObject(ref(getStorage(), path)).then(() => {
    resolve(true);
}).catch((error) => {
    reject(false);
});
// ...

「deleteObject(ref(getStorage(), path))」

当然この「ref」はVueのrefと競合します。
特にNuxtでは暗黙的にインポートされるため、意識してないとバグの基になります。

解決

大したことはないです、しっかりインポートして、名前を適当に変更してあげましょう。

import {getStorage, uploadString, ref as firebaeRef} from "@firebase/storage";

// ...
const storageRef: StorageReference = firebaeRef(getStorage(), fileName);
uploadString(storageRef, dataUrl, 'data_url').then((snapshot) => {
    resolve(true);
}).catch(error => {
    reject(false);
});
// ...

Discussion