【问题标题】:Firestore.settings() requires its first argument to be of type object but it was a custom objectFirestore.settings() 要求它的第一个参数是对象类型,但它是一个自定义对象
【发布时间】:2019-10-27 08:32:51
【问题描述】:

我无法调用 firebase.firestore().settings() 函数,因为我收到一些“要求其第一个参数为对象类型”的错误:

firebase.firestore().settings({ timestampsInSnapshots: true })

我不明白这个错误,但作为一种解决方法,我尝试创建一个对象:

const firestoreSettings = Object.create({ timestampsInSnapshots: true })
firebase.firestore().settings(firestoreSettings)

这也没用。

这个错误从何而来,如何解决?

【问题讨论】:

    标签: firebase vue.js google-cloud-firestore nuxt.js


    【解决方案1】:

    你混淆了命名空间;这应该可以解决问题

    import firebase from 'firebase/app'
    if (!firebase.apps.length) {
       firebase.initializeApp(YOUR_CONFIG_OBJECT_GOES_HERE)
    }
    const firestore = firebase.firestore()
    const settings = { timestampsInSnapshots: true }
    firestore.settings(settings) // notice it is firestore instead of firestore()
    

    PD:这不再是必需的...尝试将您的 sdk 版本更新到最后一个 :)

    【讨论】:

    • 您的意思是更新到 Firebase 6.1.1?如果是这样,我试过了,但效果并不好。我也不明白“admin”是什么(得到“admin is not defined”错误)
    • 我的错我只是更新了答案,admin 是一个约定...我不记得在哪个版本之后它被删除了,但现在它不再是问题了...无论如何,检查更新后的示例,它应该可以工作
    • 谢谢,但我仍然收到“未定义管理员”,还收到“名为“[DEFAULT]”的 Firebase 应用程序已经存在(应用程序/重复应用程序)”。我已经被这个 firebase 卡住了 5 天了,这真是太痛苦了 ***
    • 我刚刚进行了最后一次更新,因为您在多个帖子中都提出了这个问题,所以您应该只将其保留在一个地方,还要考虑到错误可能不在 firebase 方面,而是在您的设置中,检查你的版本,确保你使用的是最后一个
    • 现在返回...requires its first argument to be of type object 错误。正如我所说,我正在使用最新版本的 Firebase。关于多个线程,这是一件棘手的事情,因为我正在处理 2 个完全不同的错误,到目前为止,我得到了一个或另一个......
    【解决方案2】:

    以下应该可以解决问题:

    import firebase from 'firebase/app';
    import 'firebase/firestore';
    
    const config = {
        apiKey: 'xxxxxxxxx',
        authDomain: 'xxxxxxxxx',
        ......
    };
    
    firebase.initializeApp(config);
    
    const db = firebase.firestore();
    
    const settings = {
        timestampsInSnapshots: true
    };
    db.settings(settings);
    
    //....
    

    如另一个答案所示,请注意您不再需要使用timestampsInSnapshots 设置,请参阅https://firebase.google.com/docs/reference/js/firebase.firestore.Settings#optional-timestamps-insnapshots

    【讨论】:

      【解决方案3】:

      我注意到这个问题被标记为nuxt.js。我最近在使用 Nuxt 应用程序中的设置初始化 firestore 时遇到了这个问题。我通过确保 firestore().settings() 只被称为客户端而不是服务器端来解决了这个问题。

      【讨论】:

        猜你喜欢
        • 2019-06-07
        • 2019-12-19
        • 2021-03-01
        • 1970-01-01
        • 2012-06-11
        • 1970-01-01
        • 2022-01-02
        • 2022-01-05
        • 2019-01-03
        相关资源
        最近更新 更多