我正在使用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"}
无论函数增加超时时间或设置更大的内存,它仍然会引发相同的错误。
答案 0 :(得分:0)
我解决了问题设置context.callbackWaitsForEmptyEventLoop=false
。
这是因为callback
等待事件循环为空,使用firebase.auth()。createUser()不会发生这种情况。 http://docs.aws.amazon.com/lambda/latest/dg/nodejs-prog-model-context.html
context.callbackWaitsForEmptyEventLoop
选项
将此属性设置为false
时,Lambda会冻结容器,但在调用callback
时不会清除事件循环。