我正在调用以下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
块。
我还看到了this post,这似乎表明这是在Firebase功能3.9.1中修复的问题,但是我已经升级并且仍然存在此问题
答案 0 :(得分:2)
在v3.11.0上遍历了onCall的firebase-functions代码,自修复以来,我在代码中看不到任何其他与此相关的问题
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
然后,再次仔细检查所有内容以确保一切正常。