从Shell本地调用Firestore,但在部署到云函数后出现空错误



我正在从Firebase函数对Firestore运行查询。当我从本地shell运行函数时,一切都很好。

然而,在我部署代码并调用函数之后,Firestore在生产中返回了一个空白错误{}。

Firestore权限不应该是这里的问题,因为它在本地工作。

服务帐户也不应该成为问题。

没有错误消息或调试信息。我也检查了服务器控制台上的功能日志。

firestore.collection("users").doc(uid).set(userJson, {merge:true})
.then((done) => {
console.log('Created new user');
}).catch(err => {
console.log('Error creating new user:', JSON.stringify(err));
});

包.json

"engines": { "node": "8" }

我希望部署后的行为与shell中的行为相同。如何从Firebase Functions服务器获取对Firestore工作的调用?

  1. 检查/functions文件夹中的package.json文件(由firebaseinit创建(。请确保您使用的是最新支持的NodeJS版本。截至2020年,应为NodeJS 10:

    "engines": {"node": "10"}

  2. 请确保您使用的是Firebase CLI的最新版本。截至2020年,应为8.10.0

    npm install -g firebase-tools

npm list -g --depth=0 
npm uninstall -g firebase-tools
npm install -g firebase-tools
npm list -g --depth=0

如果不起作用,请先清理缓存npm cache clean --force,然后重试。

  1. 确保传递到firestore查询的有效负载没有空键未定义值
firestore.collection("users").doc("123").set({
id: 1234,
'': 'something', // ERROR
phone: undefined, // ERROR
email: 'user@email.com'
})
  1. Firestore调用是异步(它们返回Promise(。请确保在Firestore调用完成之前没有返回响应response.send()。正确使用async/await.then()

注意:您可能不需要显式配置管理员SDK服务帐户,因为默认服务帐户已经具有从云功能访问Firestore的权限。

相关内容

  • 没有找到相关文章

最新更新