firebase 与functions.https.onRequest事件相比,使用functions.auth.user().onCreate时无法记录日志

vc9ivgsu  于 2023-10-22  发布在  其他
关注(0)|答案(1)|浏览(123)

我遇到了一个问题,当在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事件工作。

weylhg0b

weylhg0b1#

问题解决了。结果是函数没有更新源代码中的最新代码更改。
当我进入Cloud Functions控制台->选择我的函数->单击Source->单击DOWNLOAD ZIP并将zip文件的内容与我的最新代码进行比较时,我发现我使用的是过时的代码副本。
我遇到的问题是,我使用Terraform来部署函数,包含源代码的zip文件被正确打包并放入bucket中,但引用该zip的函数没有发现zip的内容不同,因此没有部署新的zip文件。
可能没有帮助,我的zip的名称是相同的每一个部署。我只是期望google_cloudfunctions_function资源自动拾取它引用了一个基于哈希的新zip,但它没有。
为了解决这个问题,我在我的google_cloudfunctions_function资源上使用了下面的生命周期,根据bucket中对象的哈希值触发了函数的重建。

lifecycle {
 replace_triggered_by = [
   google_storage_bucket_object.auth_user_oncreate.detect_md5hash
 ]
}

希望它能帮助人们在未来,并节省他们的故障排除小时!

相关问题