【问题标题】:Reference error firestore is not defined in firebase cloud function when using firebase admin sdk使用firebase admin sdk时未在firebase云功能中定义参考错误firestore
【发布时间】:2021-06-23 11:25:04
【问题描述】:

我有一个云函数,我在其中监听 firestore 集合的 onCreate 事件。触发云功能时,我收到参考错误。下面是云函数代码和错误。

const functions = require('firebase-functions')
const serviceAccount = require('./serviceAccountKey.json')
const admin = require('firebase-admin')
const { firestore } = require('firebase-admin')

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: 'https://my-app-id.firebaseio.com', // Here I have replaced my real id for privacy
})

const db = admin.firestore()

exports.handleDiscussionReplyAdded = functions.firestore
  .document('/discussions/{discussionId}/replies/{replyId}')
  .onCreate(async (snap, context) => {
    try {
      // 1. Creating a ref to parent chat doc
      const discussionRef = db
        .collection('discussions')
        .doc(context.params.discussionId)

      // 2. Updating the data
      await discussionRef.update({
        totalReplies: firestore.FieldValue.increment(1),
      })

      // Return true if everything went fine
      return true
    } catch (error) {
      // Return error if something went wrong
      functions.logger.error(`Error: ${JSON.stringify(error)}`)
      return error
    }
  })
{
  "severity": "ERROR",
  "message": "ReferenceError: firestore is not defined\n    at /Users/syedalirazabokhari/Desktop/Development/React/omanshopping/functions/index.js:23:23\n    at cloudFunction (/Users/syedalirazabokhari/Desktop/Development/React/omanshopping/functions/node_modules/firebase-functions/lib/cloud-functions.js:134:23)\n    at /usr/local/lib/node_modules/firebase-tools/lib/emulator/functionsEmulatorRuntime.js:590:16\n    at runFunction (/usr/local/lib/node_modules/firebase-tools/lib/emulator/functionsEmulatorRuntime.js:577:15)\n    at runBackground (/usr/local/lib/node_modules/firebase-tools/lib/emulator/functionsEmulatorRuntime.js:589:11)\n    at processBackground (/usr/local/lib/node_modules/firebase-tools/lib/emulator/functionsEmulatorRuntime.js:572:11)\n    at invokeTrigger (/usr/local/lib/node_modules/firebase-tools/lib/emulator/functionsEmulatorRuntime.js:647:19)\n    at handleMessage (/usr/local/lib/node_modules/firebase-tools/lib/emulator/functionsEmulatorRuntime.js:734:15)\n    at processTicksAndRejections (internal/process/task_queues.js:93:5)"
}

我尝试调试问题但无法解决。到目前为止,我还将 firebase-admin 更新到最新版本 9.5.0。

【问题讨论】:

  • 我认为这不是您的问题的原因,但多次要求同一个模块似乎很不寻常。你考虑过const firestore = admin.firestore吗?
  • 我还有其他运行良好的云功能,但是当触发此特定功能时,我收到此参考错误。是的,你是对的,我没有注意到多个进口。我会尝试删除一个,也许这就是原因。
  • 我删除了导入,但问题存在。我认为 (firestore.FieldValue.increment(1)) 这条线有问题,但我不确定。有什么想法吗?
  • 我什至把它改成了 admin.firestore.FieldValue.increment(1)。但没有运气
  • 我正在从另一个项目更新 index.js。感谢 vscode。顺便说一句,现在问题已经解决了。谢谢@FrankvanPuffelen

标签: firebase google-cloud-firestore google-cloud-functions


【解决方案1】:

删除不必要的导入const { firestore } = require('firebase-admin'),然后将firestore.FieldValue.increment(1) 更改为admin.firestore.FieldValue.increment(1) 修复了错误。

【讨论】:

    猜你喜欢
    • 2017-12-13
    • 2017-01-02
    • 2018-05-09
    • 2021-10-16
    • 1970-01-01
    • 1970-01-01
    • 2019-04-26
    • 1970-01-01
    • 2017-10-28
    相关资源
    最近更新 更多