【发布时间】: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