如何解决无法连接到 Next.js 中的 Firestore 模拟器
我正在使用 Firebase 和 Next.js 创建一个网络应用。我在客户端使用了身份验证和 RTDB 没有任何问题,但是当我尝试使用 Cloud Firestore 时,它在浏览器的控制台中引发错误,说客户端离线或我的设备没有正常连接 em>.
我尝试通过实时服务器和其他本地服务器连接到 Firestore 模拟器,它运行良好,没有任何错误,但它在 Next.js 中无法运行。
我还在我的客户端应用中实现了这个逻辑,以防止在服务器端使用模拟器。 https://stackoverflow.com/a/66567745/7588591
import firebase from 'firebase/app'
import 'firebase/auth'
import 'firebase/firestore'
import 'firebase/database'
const clientCredentials = {
apiKey: process.env.NEXT_PUBLIC_FIREBASE_API_KEY,authDomain: process.env.NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN,databaseURL: process.env.NEXT_PUBLIC_FIREBASE_DATABASE_URL,projectId: process.env.NEXT_PUBLIC_FIREBASE_PROJECT_ID,storageBucket: process.env.NEXT_PUBLIC_FIREBASE_STORAGE_BUCKET,messagingSenderId: process.env.NEXT_PUBLIC_FIREBASE_MESSAGING_SENDER_ID,appId: process.env.NEXT_PUBLIC_FIREBASE_APP_ID
}
if (!firebase.apps.length) {
firebase.initializeApp(clientCredentials)
// Check that `window` is in scope for the analytics module!
if (typeof window !== 'undefined' && 'measurementId' in clientCredentials) {
firebase.analytics()
firebase.performance()
}
}
const firestore = firebase.firestore()
const auth = firebase.auth()
const database = firebase.database()
if (process.env.NODE_ENV === 'development') {
if (typeof window === 'undefined' || !window['_init']) {
firestore.useEmulator('localhost',8085)
database.useEmulator('localhost',9000)
if (typeof window !== 'undefined') window['_init'] = true
}
auth.useEmulator('http://localhost:9099',{
disableWarnings: true
})
}
export default firebase
export { firebase,firestore,auth,database }
这是我用来向我的客户端应用公开 Firestore、身份验证和 RTDB 实例的代码。身份验证和 RTDB 实例工作正常,但只有 Firestore 出现错误。 我试图在组件加载时获取 useEffect 钩子内的数据,以确保代码在客户端运行。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。