【问题标题】:Uncaught Error: Cannot find module 'firebase' when trying to use serverTimestamp in firestore未捕获的错误:尝试在 firestore 中使用 serverTimestamp 时找不到模块“firebase”
【发布时间】:2021-09-27 07:16:36
【问题描述】:

当我尝试添加 serverTimestamp() 时,我收到未导入 firestore (web V9) 的错误。有什么方法可以使用 serverTimestamp 或者只导入 firestore/firebase 以便我可以使用它?


addDoc(collection(db, 'rooms', roomId, 'messages'), {
  message:input,
  name:user.displayName,
  timestamp:firebase.firestore.FieldValue.serverTimestamp()// the issue 
})

【问题讨论】:

    标签: javascript reactjs firebase google-cloud-firestore


    【解决方案1】:

    serverTimestamp 没有变化,只需要正确导入 firebase&firestore(版本 9 兼容)

    import firestore from 'firebase/compat';
    import firebase from 'firebase/compat/app';
    
    

    【讨论】:

      【解决方案2】:

      您不需要 admin.firestore.FieldValue 命名空间即可在新的模块化 SDK 中使用 serverTimestamp()。您可以简单地导入它,如下所示:

      import { addDoc, collection, serverTimestamp } from "firebase/firestore"
      // import serverTimestamp ----->^
      
      addDoc(collection(db, 'rooms', roomId, 'messages'), {
        message: input,
        name: user.displayName,
        timestamp: serverTimestamp() // <-- usage 
      })
      

      在您实际使用模块化 SDK 时,仅为 serverTimestamp() 导入 compat 版本的 Firestore,这违背了拥有模块化 SDK 的目的。

      来自documentation

      当同时使用 compat 和 Modular 版本时,您的应用将编译,在您从应用中完全删除 compat 语句和代码之前,您不会获得模块化代码的应用大小优势。

      【讨论】:

        猜你喜欢
        • 2022-10-25
        • 2018-05-02
        • 2021-11-24
        • 2015-11-22
        • 2018-12-01
        • 1970-01-01
        • 2022-08-13
        • 1970-01-01
        • 2018-07-21
        相关资源
        最近更新 更多