无法部署Firebase功能

时间:2020-03-23 10:06:55

标签: firebase google-cloud-functions

每当我运行“ firebase部署-仅功能”时,都会出现此错误 解析函数触发器时发生错误。

TypeError:函数.https.onCall(...)。然后不是函数 在对象。 (C:\ Users \ Lenovo \ Desktop \ Firebase Revision \ functions \ index.js:11:4) 在Module._compile(内部/模块/cjs/loader.js:1158:30) 在Object.Module._extensions..js(内部/模块/cjs/loader.js:1178:10) 在Module.load(internal / modules / cjs / loader.js:1002:32) 在Function.Module._load(internal / modules / cjs / loader.js:901:14) 在Module.require(internal / modules / cjs / loader.js:1044:19) 在要求时(内部/模块/cjs/helpers.js:77:18) 在C:\ Users \ Lenovo \ AppData \ Roaming \ npm \ node_modules \ firebase-tools \ lib \ triggerParser.js:15:15 在对象。 (C:\ Users \ Lenovo \ AppData \ Roaming \ npm \ node_modules \ firebase-tools \ lib \ triggerParser.js:53:3) 在Module._compile(internal / modules / cjs / loader.js:1158:30)

以下是我在index.js函数中的代码

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();

exports.addAdminRole = functions.https.onCall((data,context) => {
    return admin.auth().getUserByEmail(data.email).then(user => {
        return admin.auth().setCustomUserClaims(user.uid,{
            admin: true
        });
    })
}).then(()=>{
    return {
        message: `Success! ${data.email} has been made an admin`
    }
}).catch(err => {
    return err;
})

1 个答案:

答案 0 :(得分:0)

您没有正确地链接then()方法。您应该执行以下操作:

exports.addAdminRole = functions.https.onCall((data, context) => {
    return admin.auth().getUserByEmail(data.email)
        .then(user => {
            return admin.auth().setCustomUserClaims(user.uid, {
                admin: true
            });
        })
        .then(() => {
            return {
                message: `Success! ${data.email} has been made an admin`
            }
        }).catch(err => {
            return err;
        })
})

请注意,不要这样做

.catch(err => {
    return err;
})

您应遵循how to handle errors in a Callable Cloud Function上的文档。