【问题标题】:Firebase cloud functions - Function returned undefined, expected Promise or valueFirebase 云函数 - 函数返回未定义、预期的 Promise 或值
【发布时间】:2018-06-12 04:18:39
【问题描述】:

我已通过其他线程阅读并尝试将某些内容返回到我的云函数,但它仍然给出相同的函数返回未定义、预期的 Promise 或值警告...我在这里缺少什么?

基本上,我使用 mailgun-js 向用户和管理员发送两封电子邮件,即使发送成功等等,我的日志中仍然收到相同的警告。

exports.sendSample = functions.database
.ref( 'sample/{pushID}' )
.onWrite( event => {

    //  only trigger if it's new
    if ( !event.data.exists() || event.data.previous.exists() ) return 0

    const e = event.data.val()

    const toUser = {
        to      : `${ e.email }`,
        from    : `xxx`,
        subject : `xxx`,
        html    : `xxx`
    }

    const toAdmin = {
        to      : `${ e.admin }`,
        from    : `xxx`,
        subject : `xxx`,
        html    : `xxx`
    }

    //  send sms
    if ( e.mobile !== 'none' ) {
        return client.messages.create({
            body : `xxx`,
            to   : `${e.mobile}`,
            from : `xxx`
        })
        .then( message => {
            sendEmail()
            return message.sid
        })
        .catch( err => {
            return err
        })
    } else {
        sendEmail()
    }

    //  send email
    function sendEmail() {
        if ( e.email !== 'none' ) {
            return mailgun.messages().send( toUser, ( err, body ) => {
                return ( err, body )
                return mailgun.messages().send( toAdmin, ( err, body ) => {
                    return ( err, body )
                })
            })
        } else {
            return true
        }
    }
})

【问题讨论】:

  • 可以分享完整的云功能代码吗?
  • 正如 Mark 所说:确保我们可以看到重现问题的完整但最少的 Cloud Functions 代码。现在,我们缺少将 sendEmail 连接到 Cloud Functions 的方式。但是我立即注意到e.email === 'none' 时您没有返回任何内容,这可能是个问题。
  • 我尝试在 email === none 时返回 true,但结果仍然相似。 @mark922 我现在正在使用完整功能更新问题。

标签: javascript firebase google-cloud-functions mailgun


【解决方案1】:

如前所述,您需要返回一个值。

if (e.email !== 'none') {
    ...
} else {
    return true;
}

【讨论】:

  • 我试过这样做,但结果还是一样...函数运行成功但返回未定义的警告。
  • 返回 sendEmail()
  • 唉,我以为“return sendEmail()”解决了这个问题,但是在成功几天后...今天它再次返回相同的警告...函数返回未定义,预期的 Promise 或值......叹息......我已经尝试返回一些东西,还缺少什么? @4face
【解决方案2】:

这个怎么样?

// send sms
if ( e.mobile !== 'none' ) {
  ...

} else {
    sendEmail()
}

// send sms
if ( e.mobile !== 'none' ) {
  ...

} else {
    return sendEmail()
}

【讨论】:

    猜你喜欢
    • 2019-08-06
    • 2018-12-03
    • 2019-11-03
    • 2019-08-12
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多