TypeError:未定义不是一个对象(评估'_app.firebase.apps')
Posted
技术标签:
【中文标题】TypeError:未定义不是一个对象(评估\'_app.firebase.apps\')【英文标题】:TypeError: undefined is not an object (evaluating '_app.firebase.apps')TypeError:未定义不是一个对象(评估'_app.firebase.apps') 【发布时间】:2022-01-17 11:35:33 【问题描述】:有人可以帮忙解决这个类型错误吗?我正在尝试通过 expo go 应用程序连接到 firebase,并且在我有 firebase 的每个地方都会出现此错误。我猜测问题出在导入上,因为初始导入对于 firebase 来说已经过时了。如果我没有正确进行导入,我很想知道。
我的代码如下:
// @refresh reset
import React , useState, useEffect, useCallback from 'react';
import AsyncStorage from '@react-native-async-storage/async-storage'
import StyleSheet, Text, TextInput, Button, View from 'react-native';
import initializeApp, firebase from "firebase/app";
import getFirestore, collection, getDocs from 'firebase/firestore/lite';
import GiftedChat from 'react-native-gifted-chat'
const firebaseConfig =
//info for database
;
if (firebase.apps.length === 0) //THIS IS WHERE THE ERROR KEEPS COMING UP FIRST
firebase.initializeApp(firebaseConfig)
const db = firebase.firestore()
const chatsRef = db.collection('chats')
export default function App()
const [user, setUser] = useState(null)
const [name, setName] = useState('')
const [messages, setMessages] = useState([])
useEffect(() =>
readUser()
const unsubscribe = chatsRef.onSnapshot((querySnapshot) =>
const messagesFirestore = querySnapshot
.docChanges()
.filter(( type ) => type === 'added')
.map(( doc ) =>
const message = doc.data()
//createdAt is firebase.firestore.Timestamp instance
//https://firebase.google.com/docs/reference/js/firebase.firestore.Timestamp
return ...message, createdAt: message.createdAt.toDate()
)
.sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime())
appendMessages(messagesFirestore)
)
return () => unsubscribe()
, [])
const appendMessages = useCallback(
(messages) =>
setMessages((previousMessages) => GiftedChat.append(previousMessages, messages))
,
[messages]
)
async function readUser()
const user = await AsyncStorage.getItem('user')
if (user)
setUser(JSON.parse(user))
async function handlePress()
const _id = Math.random().toString(36).substring(7)
const user = _id, name
await AsyncStorage.setItem('user', JSON.stringify(user))
setUser(user)
async function handleSend(messages)
const writes = messages.map((m) => chatsRef.add(m))
await Promise.all(writes)
if (!user)
return (
<View style=styles.container>
<TextInput style=styles.input placeholder="Enter your name" value=name onChangeText=setName />
<Button onPress=handlePress title="Enter the chat" />
</View>
)
return <GiftedChat messages=messages user=user onSend=handleSend />
const styles = StyleSheet.create(
container:
flex: 1,
backgroundColor: '#fff',
alignItems: 'center',
justifyContent: 'center',
padding: 30,
,
input:
height: 50,
width: '100%',
borderWidth: 1,
padding: 15,
marginBottom: 20,
borderColor: 'gray',
,
)
【问题讨论】:
请检查此链接以解决您的问题:a click here! 【参考方案1】:不要将 firebase 用于 react-native 应用的 web 应用。它适用于最简单的事情,但没有针对它进行优化,在进一步开发应用程序时会遇到很多麻烦。我也这样做了,但最终没有成功。 使用react-native-firebase。这将毫无问题地工作,并且不需要很长时间来设置
【讨论】:
我正在使用 expo go 并查看了 react native firebase。它说我不能将它与 expo go 应用程序一起使用。是否有与 expo go 应用兼容的替代方案? 不,没有。添加 firebase react-native 后,您无法使用 ExpoGo。使用 npx build-android/ios 然后 npx run-android/ios 在模拟器或真机上构建。以上是关于TypeError:未定义不是一个对象(评估'_app.firebase.apps')的主要内容,如果未能解决你的问题,请参考以下文章
如何在本机反应中修复“TypeError:未定义不是对象(评估'_reactNativeCamera.default.constants')”错误?
TypeError:未定义不是一个对象(评估'details.date.getTime')
TypeError:未定义不是对象(评估'this.setState')[重复]
TypeError:未定义不是对象(评估“window.location.href”)