我有一个Firebase云功能,它使用Expressjs制作一些REST端点。函数使用Firestore
获取或设置数据firebase-admin
。当我实时部署我的功能时,它们工作正常。但是,当我尝试使用firebase serve
在本地运行它们时,它们会在尝试访问firestore
时崩溃。部署后该功能正常工作,我在本地提供此功能时只会遇到此问题。
这是一个超级精简函数,显示崩溃发生的位置:
app.get('/account/:uId/persona/:pId/test', (req, res) => {
const uid = req.params.uId;
const pid = req.params.pId;
admin.firestore()
.collection('my-collection')
.doc(uid)
.get()
.then((succ) => res.status(204).send("success"))
.catch(err => res.status(500).send("failure"))
});
它在我的功能结束时没有击中catch
。终端日志说:
info: User function triggered, starting execution
info: Execution took 1404 ms, finished with status: 'crash'
响应说:
{
"error": {
"code": 500,
"status": "INTERNAL",
"message": "function crashed",
"errors": [
"socket hang up"
]
}
}
我设置了管理员凭据,但它没有什么区别:https://firebase.google.com/docs/functions/local-emulator#set_up_admin_credentials_optional
有什么想法吗?