我遇到了一个问题,当在Firebase Auth用户创建事件的**functions.auth.user().onCreate()**函数中使用时,**console. log()或functions.logger.log()**似乎无法正常工作。
我尝试过使用HTTP触发器记录日志,它工作得很好,我可以看到输出,但只是当我在onCreate()函数中使用log函数时,我看不到任何东西,除非我的代码抛出一些错误。
我知道onCreate函数被触发了,因为我至少可以在日志中看到这一点。
下面是auth onCreate事件和HTTP事件的完整js函数代码。
有什么想法吗?
Firebase Auth on Create事件函数代码
const admin = require('firebase-admin')
const functions = require('firebase-functions/v1')
admin.initializeApp()
exports.authUserOncreate = functions.auth.user().onCreate(async (user) => {
console.log("=== Console Log ===")
functions.logger.log("=== Functions Logger Log ===")
console.log(user)
const db = admin.firestore()
await db.collection('users').doc(user.uid).set({
displayName: user.displayName,
email: user.email
})
})
HTTP事件函数编码
const admin = require('firebase-admin')
const functions = require('firebase-functions/v1')
admin.initializeApp()
exports.httpRequest = functions.https.onRequest((req, res) => {
console.log("Console Log Statement");
functions.logger.log("First line of function!")
})
下面是用于这两个函数的package.json。
package.json
{
"dependencies": {
"firebase-functions": "^4.4.1",
"firebase-admin": "^11.11.0"
},
"engines": {
"node": "20"
}
}
我希望在运行函数时看到**console.log()或functions.logger.log()**的输出,但没有运气。
如前所述,我已经尝试了一个HTTP事件触发函数,它工作得很好,所以不知道为什么它不能为Firebase auth onCreate事件工作。
1条答案
按热度按时间weylhg0b1#
问题解决了。结果是函数没有更新源代码中的最新代码更改。
当我进入Cloud Functions控制台->选择我的函数->单击Source->单击DOWNLOAD ZIP并将zip文件的内容与我的最新代码进行比较时,我发现我使用的是过时的代码副本。
我遇到的问题是,我使用Terraform来部署函数,包含源代码的zip文件被正确打包并放入bucket中,但引用该zip的函数没有发现zip的内容不同,因此没有部署新的zip文件。
可能没有帮助,我的zip的名称是相同的每一个部署。我只是期望google_cloudfunctions_function资源自动拾取它引用了一个基于哈希的新zip,但它没有。
为了解决这个问题,我在我的google_cloudfunctions_function资源上使用了下面的生命周期,根据bucket中对象的哈希值触发了函数的重建。
希望它能帮助人们在未来,并节省他们的故障排除小时!