I am trying integrating Firebase with Vue 4 application is currently getting the following error.
Uncaught TypeError: db__WEBPACK_IMPORTED_MODULE_1_.default.database is not a function
I am using “firebase”: “^9.0.0” “vue”: “^3.0.0”
import { initializeApp } from "firebase/app";
import { getDatabase } from "firebase/database";
const firebaseConfig = {
// keys
};
const app = initializeApp(firebaseConfig);
const db = getDatabase(app);
export {db}
My function call is as below
import {reactive} from 'vue';
import { ref, set, push } from "firebase/database";
import {db} from "./db"
export default {
setup(){
const inputUsername = ref("");
const inputMessage = ref("");
const state = reactive({
username: "",
messages:[]
});
const Login = () =>{
if(inputUsername.value != "" || inputUsername.value != null){
state.username = inputUsername.value;
inputUsername.value = "";
}
}
const SendMessage = () => {
// const messagesRef = db.database().ref("messages");
if (inputMessage.value === "" || inputMessage.value === null) {
return;
}
const message = {
username: state.username,
content: inputMessage.value
}
set(push(ref(db, 'messages')), message);
// messagesRef.push(message);
inputMessage.value = "";
}
return{
inputUsername,
Login,
state,
inputMessage,
SendMessage
}
}
}
I tried the following the following suggestion but it didn’t work.
Thank you!
Advertisement
Answer
The new modular SDK does not use namespaces anymore. So you cannot use app.database()
. You can simply export a database instance from the file where you initialize Firebase as shown below:
import { initializeApp } from "firebase/app";
import { getDatabase } from "firebase/database";
const app = initializeApp(firebaseConfig);
const db = getDatabase(app);
export {db}
Then import this wherever you need and use it:
import { ref, child, get } from "firebase/database";
import {db} from "../path/to/firebase.js"
const message = {
username: state.username,
content: inputMessage.value
}
set(push(ref(db, 'messages')), message);
You can learn more about the new syntax in the documentation
Uncaught TypeError: db._checkNotDeleted is not a function
This error arise due to the fact the you are importing ref
from both firebase
and vue
. Please import Firebase’s ref
as fireRef
.
import { reactive, ref } from "vue";
import { ref as fireRef, set, push } from "firebase/database";
import { db } from "./db";
// usage
set(push(fireRef(db, "messages")), message);