我正在调用以下Firebase函数:
exports.getUserRecord = functions.https.onCall(async (data, context) => {
try {
//This successfully logs an existing uid in firestore, it should be retrievable
console.log(context.auth.uid)
const doc = admin.firestore().collection('user').doc(context.auth.uid);
const res = await doc.get() //Isolated it down to this line that is failing
return res
} catch (err) {
console.log(err)
throw new functions.https.HttpsError('unavailable', 'some error message');
}
});
当调用此函数时,我在客户端上收到以下错误:
POST https://us-central1-xxx-xxx.cloudfunctions.net/getUserRecord 500
Uncaught (in promise) Error: INTERNAL
在服务器日志上,我看到了这个错误:
Unhandled error function error(...args) {
write(entryFromArgs('ERROR', args));
}
我想知道为什么我的错误日志记录行都没有发现错误,以及是什么导致了这个错误?
编辑:我也尝试过在我的catch
块中记录其他东西,但它们没有出现,似乎有错误,但代码不知何故没有进入catch
块。
我也看到了这篇帖子,它似乎表明这是一个在firebase功能3.9.1中修补的问题,但我已经升级,仍然有这个问题
在v3.11.0中浏览了onCall的firebase函数代码,自从修复以来,我在代码中没有看到任何其他可能与此相关的问题
https://github.com/firebase/firebase-functions/issues/757
在与@Matt讨论了node_module版本后,我们发现该问题与最初升级后node_modules没有更新到最新版本有关。
对于将来遇到此问题的任何人的注意事项
如果更新到该模块的最新版本,请确保执行以下操作以覆盖所有基础,
查看node_modules/firebase-functions/package.json
属性version
以确保安装了正确的版本。
还要查看根文件夹package.json和package-lock.json,以确保正确的版本是最新的。
如果有任何东西不是v3.9.1或更高版本,请执行以下操作,
rm -rf node_modules
npm i firebase-functions@latest --save
之后,再次仔细检查一切,确保一切正常。