TypeError: undefined is not an object (evaluating '""ref.onSnapshot"')
这个错误通常出现在使用 Firebase 或类似实时数据库时,表示你尝试调用 onSnapshot
方法,但 ref
对象未正确初始化或未定义。
onSnapshot
是 Firebase Realtime Database 或 Firestore 中的一个方法,用于监听数据的变化。当数据库中的数据发生变化时,onSnapshot
会触发回调函数。
onSnapshot
之前,必须先初始化 Firebase。ref
变量未正确赋值或未定义。确保你已经正确初始化了 Firebase。以下是一个示例:
import firebase from 'firebase/app';
import 'firebase/firestore';
// 你的 Firebase 配置
const firebaseConfig = {
apiKey: "YOUR_API_KEY",
authDomain: "YOUR_AUTH_DOMAIN",
projectId: "YOUR_PROJECT_ID",
storageBucket: "YOUR_STORAGE_BUCKET",
messagingSenderId: "YOUR_MESSAGING_SENDER_ID",
appId: "YOUR_APP_ID"
};
// 初始化 Firebase
if (!firebase.apps.length) {
firebase.initializeApp(firebaseConfig);
}
const db = firebase.firestore();
ref
正确赋值确保你在调用 onSnapshot
之前已经正确获取了 ref
对象。以下是一个示例:
const docRef = db.collection('yourCollection').doc('yourDocument');
docRef.onSnapshot((doc) => {
if (doc.exists()) {
console.log('Document data: ', doc.data());
} else {
console.log('No such document!');
}
}, (error) => {
console.error('Error fetching document: ', error);
});
确保方法名拼写正确,应该是 onSnapshot
而不是 onsnapshot
或其他拼写错误。
以下是一个完整的示例代码,展示了如何初始化 Firebase 并使用 onSnapshot
监听数据变化:
import firebase from 'firebase/app';
import 'firebase/firestore';
// 你的 Firebase 配置
const firebaseConfig = {
apiKey: "YOUR_API_KEY",
authDomain: "YOUR_AUTH_DOMAIN",
projectId: "YOUR_PROJECT_ID",
storageBucket: "YOUR_STORAGE_BUCKET",
messagingSenderId: "YOUR_MESSAGING_SENDER_ID",
appId: "YOUR_APP_ID"
};
// 初始化 Firebase
if (!firebase.apps.length) {
firebase.initializeApp(firebaseConfig);
}
const db = firebase.firestore();
const docRef = db.collection('yourCollection').doc('yourDocument');
docRef.onSnapshot((doc) => {
if (doc.exists()) {
console.log('Document data: ', doc.data());
} else {
console.log('No such document!');
}
}, (error) => {
console.error('Error fetching document: ', error);
});
通过以上步骤,你应该能够解决 TypeError: undefined is not an object (evaluating '""ref.onSnapshot"')
错误。
领取专属 10元无门槛券
手把手带您无忧上云