javascript - Tingkatkan ke Firebase JS 8.0.0: Kesalahan impor yang dicoba: 'app' tidak diekspor dari 'firebase/app' (diimpor sebagai 'firebase')
Setelah memperbarui ke 8.0.0, saya mendapatkan kesalahan berikut:
Kesalahan impor yang dicoba: 'initializeApp' tidak diekspor dari 'firebase/app' (diimpor sebagai 'firebase').
Impor saya terlihat seperti ini:
import * as firebase from "firebase/app"
firebase.initializeApp({ ... })
TypeScript juga mengeluh:
Properti 'initializeApp' tidak ada pada tipe 'typeof import("/path/to/my/file")'. ts(2339)
Bagaimana saya memperbaiki ini?
Jawaban #1
Pada versi 8.0.0, SDK Firebase mengalami perubahan signifikan dalam cara menangani ekspor:
Perubahan besar: field
browserdalam file package.json sekarang mengarah ke bundle ESM alih-alih bundle CJS. Pengguna yang menggunakan impor ESM sekarang harus menggunakan impor default alih-alih impor namespace.Sebelum 8.0.0
import * as firebase from 'firebase/app'Setelah 8.0.0
import firebase from 'firebase/app'Kode yang menggunakan
require('firebase/app')ataurequire('firebase')akan tetap berfungsi, tetapi untuk mendapatkan pengetikan yang tepat (untuk penyelesaian kode, misalnya) pengguna sebaiknya mengubah panggilan require ini menjadirequire('firebase/app').defaultataurequire('firebase').default. Hal ini karena SDK sekarang menggunakan pengetikan untuk bundle ESM, dan bundle yang berbeda berbagi satu file pengetikan.
Jadi, Anda harus menggunakan ekspor default bundel ESM baru:
import firebase from "firebase/app"
firebase.initializeApp({ ... })
Jika Anda bekerja dengan versi SDK 9.0, baca pertanyaan ini sebagai gantinya:
- Bagaimana cara memperbaiki kesalahan impor Firebase 9.0? "Kesalahan impor yang dicoba: 'firebase/app' tidak mengandung ekspor default (diimpor sebagai 'firebase')."
Jawaban #2
cara lama untuk mengimpor firebase : import * as firebase dari "firebase/app";
Cara baru untuk mengimpor di versi 8.0.0: import firebase dari "firebase/app"
misalnya: cara saya melakukannya. Hanya 2 baris pertama yang relevan, baris lainnya hanya ditambahkan sebagai bagian dari kode saya tapi sebenarnya cukup umum!
import firebase from "firebase/app"
import "firebase/auth"
const firebaseConfig = {
apiKey: XXXX,
authDomain: XXX,
projectId: XXXX,
storageBucket: XXXX,
messagingSenderId: XXXX,
appId: XXXX,
}
if (!firebase.apps.length) {
firebase.initializeApp(firebaseConfig)
}
export const auth = firebase.auth()
export const googleAuthProvider = new firebase.auth.GoogleAuthProvider()
ganti XXXX dengan data kamu, hanya ingin memastikan :)
