【问题标题】:Firebase new Cloud Function throws INTERNAL errorFirebase 新的 Cloud Function 抛出内部错误
【发布时间】:2022-12-12 17:45:37
【问题描述】:

我正在使用 Vue.js 3 Typescript 和 Firebase 开发一个项目。 在尝试实现新的云功能时,我突然遇到了以下问题:

加载资源失败:服务器响应状态为 500()

未处理的承诺拒绝:FirebaseError:内部

我的旧云功能按预期工作,但试图添加一个删除文档的功能突然发生了。我试着分解它,认为这可能是一个语法问题,但即使从另一个工作的云功能中复制整个样板也无济于事。 接下来我开始剥离它的功能。 我发现了两件事:

1.准系统

exports.deleteSingleCourse = functions.region('europe-west1').https.onCall(async (data: any, context: any) => {

  console.log('teachersRef')
  return "teachersRef"
})

输出:{数据:'teachersRef'}

此代码按预期工作,因此调用该函数时没有错误。

2.再多一点

exports.deleteSingleCourse = functions.region('europe-west1').https.onCall(async (data: any, context: any) => {

  const teachersRef = db.collection(db, 'schools/' + 'y70B7KSbwd2D55SRPItY' + "/teachers");
  console.log(teachersRef)

  return "test"
})

输出:加载资源失败:服务器响应状态为 500 ()

未处理的承诺拒绝:FirebaseError:内部

此代码不知何故已经完全停止工作并抛出前面提到的错误。 注意:console.log 仅用于使用“teachersRef”变量以阻止 Firebase 取消函数部署。

就在这个问题之前,我不小心在我的 index.ts 中有两个同名的不同云函数并部署了它们。我注意到后更改了名称,将它们从 firebase 控制台中删除并重新部署。我不知道这是否与我的问题有关,但只是想提一下以防万一。

【问题讨论】:

  • 您使用的是哪个版本的 Admin SDK?以及如何导入 Admin SDK 模块?
  • 我像这样将它导入到 index.ts 中:const admin = require('firebase-admin')。我使用 npm firebase-admin -v 得到的版本是 8.11.0

标签: typescript firebase vue.js


【解决方案1】:

对于 Admin SDK 版本 8,您不能使用模块化语法,您需要使用全局 admin 命名空间。

所以 const teachersRef = db.collection(db, 'schools/' + 'y70B7KSbwd2D55SRPItY' + "/teachers");

必须改为

const teachersRef = admin.firestore().collection('schools/' + 'y70B7KSbwd2D55SRPItY' + "/teachers");


如果您想使用模块化语法,则需要将 Admin SDK 版本升级到版本 10 并更改导入方式,如文档中的 here 所述。

【讨论】:

  • 完美它的工作原理。但为什么其他方法在我的其他云功能中有效?
猜你喜欢
  • 2023-03-13
  • 2018-11-27
  • 2020-04-29
  • 2019-09-11
  • 2020-01-31
  • 2021-05-14
  • 1970-01-01
  • 2021-03-02
  • 2019-02-28
相关资源
最近更新 更多