Node.js 使用AWS Lambda中的Firebase会导致任务超时

Node.js 使用AWS Lambda中的Firebase会导致任务超时,node.js,firebase,aws-lambda,firebase-authentication,Node.js,Firebase,Aws Lambda,Firebase Authentication,我使用Lambda函数创建具有Firebase身份验证的用户,然后将其保存在我自己的数据库中 var firebase = require('firebase-admin') const serviceAccount = require('./firebase.json') firebase.initializeApp({ credential: firebase.credential.cert(serviceAccount), databaseURL: 'https://***

我使用Lambda函数创建具有Firebase身份验证的用户,然后将其保存在我自己的数据库中

var firebase = require('firebase-admin')
const serviceAccount = require('./firebase.json')
firebase.initializeApp({
    credential: firebase.credential.cert(serviceAccount),
    databaseURL: 'https://*****.firebaseio.com'
})

exports.handler = function(event, context, callback) {

    const {email, password, name, ...} = event

    firebase.auth().createUser({
        email,
        emailVerified: false,
        password,
        displayName: name,
        disabled: false
    })
    .then(firebaseResult => {
        const {uid} = firebaseResult
        return saveUserAtDatabase({email, name, ...})
    })
    .then(result => {
        callback(null, result)
    })
}
用户是在Firebase和我的数据库中创建的,但当我在AWS Lambda上运行它时,它会抛出以下错误:

{"errorMessage":"2019-01-07T21:25:49.095Z c...e9 Task timed out after 6.01 seconds"}

无论我从函数中增加了多少超时时间或设置了更高的内存,它仍然会抛出相同的错误。

我在设置
上下文时解决了这个问题。callbackaitsforemptyeventloop=false

这是因为
callback
等待事件循环为空,而使用firebase.auth().createUser()时不会发生这种情况。这里记录了
context.callbackhaitsforemptyeventloop
选项


当此属性设置为
false
时,Lambda会冻结容器,但在调用
回调时不会清除事件循环我解决了设置
上下文时的问题。callbackaitsforeptyeventloop=false

这是因为
callback
等待事件循环为空,而使用firebase.auth().createUser()时不会发生这种情况。这里记录了
context.callbackhaitsforemptyeventloop
选项

当此属性设置为
false
时,Lambda会冻结容器,但在调用
回调时不会清除事件循环