错误:`未捕获(承诺中)类型错误:无法读取未定义的属性'doc'`

Posted

技术标签:

【中文标题】错误:`未捕获(承诺中)类型错误:无法读取未定义的属性\'doc\'`【英文标题】:error: `Uncaught (in promise) TypeError: Cannot read property 'doc' of undefined`错误:`未捕获(承诺中)类型错误:无法读取未定义的属性'doc'` 【发布时间】:2021-05-13 01:06:33 【问题描述】:

错误:Uncaught (in promise) TypeError: Cannot read property 'doc' of undefined

 actions: 
        async register( dispatch , form) 

          //sign up user
          const  user  = await fb.auth.createUserWithEmailAndPassword(form.email, form.password)
    
          // create user profile object

          await fb.usersCollection.doc(user.uid).set(
            name: form.name
          )
    
          //fetch user profile
          
          dispatch('fetchUserProfile', user)
    
        ,

请帮助找到问题在哪里可以定义文档?或者哪里出错了?

【问题讨论】:

那是因为fb.usersCollection 未定义。 【参考方案1】:

你需要类似的东西

import  fb, db  from '@/modules/firebase'
...
await db.collection('users').doc(user.uid).set(
        name: form.name
      )

【讨论】:

【参考方案2】:

如果你得到错误

 Cannot read property 'XXX' of undefined

检查点“.XXX”之前的值,例如。

fb.usersCollection.doc
console.log(fb.usersCollection) // undefined

您的fb.usersCollection 具有“未定义”值,因为fb 不包含任何usersCollection。如果你想访问你的 firebase“用户”集合,你必须这样做

fb.collection('users').doc(...);

结帐firebase 文档

【讨论】:

以上是关于错误:`未捕获(承诺中)类型错误:无法读取未定义的属性'doc'`的主要内容,如果未能解决你的问题,请参考以下文章

未捕获(承诺中)类型错误:无法读取未定义的属性“uid”

未捕获(承诺中)类型错误:无法读取未定义的属性“协议”

如何修复此错误:未捕获(承诺)类型错误:无法读取未定义的属性(读取“长度”)

在与 API 调用关联的函数中:未捕获(承诺中)类型错误:无法读取未定义的属性“包含”

VueJS 3 / 路由器 / 带有推送的重定向:未捕获(承诺中)类型错误:无法读取未定义的属性(读取“推送”)

未捕获(承诺):TypeError:无法读取未定义的属性“创建”(离子 3.9,Angularjs 5.0.3)