FirebaseError:无法获取文档,因为客户端处于脱机状态
Posted
技术标签:
【中文标题】FirebaseError:无法获取文档,因为客户端处于脱机状态【英文标题】:FirebaseError: Failed to get document because the client is offline 【发布时间】:2020-09-28 04:27:35 【问题描述】:我正在使用 React 16.13.1
我正在尝试从“列表”集合中获取文档。 如果我注释掉第 15 到 24 行并取消注释第 25 行,它将起作用。
但是,我收到了这个错误: “FirebaseError:无法获取文档,因为客户端离线。”
第 24 行传递给 getDoc()
的参数与第 25 行相同。
有谁知道为什么会发生这种情况以及如何在使用第 18 行时让 getDoc()
函数工作?
更新:我注意到我可以毫无错误地调用数据库,但只有在登录后我才会收到错误“FirebaseError: Failed to get document because the client is offline”
1. import React, useState, useEffect from 'react'
2. import Redirect from 'react-router-dom'
3. import Firebase from '../../services/Firebase/firebase'
4. import useStyles from './styles.js'
5.
6. const Login = ( currentUser, setCurrentUser ) =>
7. const [username, setUsername] = useState('')
8. const [password, setPassword] = useState('')
9. const [error, setError] = useState(null)
10.
11. const classes = useStyles()
12.
13. const handleForm = async e =>
14. e.preventDefault()
15. let email = username + '@site.com'
16. let document
17. try
18. document = await Firebase.doSignInWithEmailAndPassword(email, password)
19. catch (err)
20. setError('Sorry, there was an issue with your account. Please try again later.')
21.
22. const user = document
23. console.log(user.uid)
24. getDoc(user.uid)
25. // getDoc('GeAT8UytRYSax49VNwSYAzFrp7t1')
26.
27.
28. const getDoc = async (uid) =>
29. try
30. const list = await Firebase.database.collection('List').doc(uid).get()
31. console.log(list)
32. catch(err)
33. console.log(err)
34.
35.
36.
37. return (
38. <>
39. /* Some html */
40. </>
41. )
42.
43.
44. export default Login
【问题讨论】:
【参考方案1】:每当我的控制台以开发模式在 chrome 中打开时,我都会遇到同样的问题。自从更新到 firebase 7.15.1 我没有遇到这个问题。
【讨论】:
仅供参考并确认它是issue with firebase。 7.15.1 表明它修复了这个特定问题。 发生在"firebase": "^8.2.7",
【参考方案2】:
我认为你需要等待文件
13. const handleForm = async e =>
14. e.preventDefault()
15. let email = username + '@site.com'
16. let document
17. try
18. document = await Firebase.doSignInWithEmailAndPassword(email, password)
19. catch (err)
20. setError('Sorry, there was an issue with your account. Please try again later.')
21.
22. if (document)
23. getDoc(user.uid)
24.
26.
【讨论】:
感谢您的反馈。我可以确认 user.uid 每次都按照我最初编写的方式传递给 getDoc 函数。【参考方案3】:我认为在这种情况下需要考虑一些重要的事情。
-
确保您的互联网连接良好。客户可能会认为它在线。
您可能试图引用尚未创建的集合/文档。因此,您可以使用虚拟文档创建集合,也可以等待文档创建完成。
您甚至可以尝试简单的操作,例如重新启动 Web 浏览器。
【讨论】:
感谢您的反馈。我正在开发中对此进行测试,所以所有这些都被考虑在内。以上是关于FirebaseError:无法获取文档,因为客户端处于脱机状态的主要内容,如果未能解决你的问题,请参考以下文章
FirebaseError browserErrorMessage:“无法注册 ServiceWorker:ServiceWorker 脚本评估失败”
FirebaseError:权限缺失或不足。 -类星体和火力基地
FirebaseError:使用无效数据调用的函数 addDoc()。不支持的字段值:未定义
firebase firestore 离线持久化 FirebaseError