无法部署异步 Firebase 功能

时间:2021-03-29 19:58:34

标签: javascript firebase async-await firebase-authentication

我正在尝试添加具有以下功能的用户角色。该函数应部署为 firebase 函数。

const functions = require('firebase-functions')
const admin = require('firebase-admin')

admin.initializeApp()
const db = admin.firestore()

exports.AddUserRole = functions.auth.user().onCreate(async (authUser) => {
  if (authUser.email) {
    const customClaims = {
      admin: true,
    }
    try {
      let _ = await admin.auth().setCustomUserClaims(authUser.uid, customClaims)
      return db.collection('roles').doc(authUser.uid).set({
        email: authUser.email,
        role: customClaims,
      })
    } catch (error) {
      console.log(error)
    }
  }
})

当我尝试使用 firebase deploy --only functions:AddUserRole 进行部署时,我收到一个错误解析错误:意外令牌 => 并且部署失败。

如果我删除 async/await 它工作得很好,但我需要异步等待这个和未来的功能,所以我想知道我做错了什么。

一些附加信息。我正在使用 node v.12.21.0 和所有 firebase 工具/SDK 等的最新版本。

1 个答案:

答案 0 :(得分:0)

我认为您可以删除 '_ = ...' 并等待在角色中设置新文档的响应并返回。

这只是一个建议,但我希望它有所帮助。

exports.AddUserRole = functions.auth.user().onCreate(async (authUser) => {
  if (authUser.email) {
    const customClaims = {
      admin: true,
    }
  try {
    await admin.auth().setCustomUserClaims(authUser.uid, customClaims)
    //Or whatever you want to call it
    const updatedRole = await db.collection('roles').doc(authUser.uid).set({
      email: authUser.email,
      role: customClaims,
    })
      return updatedRole
    } catch (error) {
      console.log(error)
    }
  }
})