繁体   English   中英

为什么我会收到“客户端尚未准备好发出请求” - 调度 function 调用 Firestore get() 失败

[英]Why do I get "Client is not yet ready to issue requests" - Firestore get() fails when called by Schedule function

在我的 Firebase 项目中,我有一个 functions.pubsub.schedule().onRun() 每 5 分钟运行一次以执行一些与日历相关的任务。 它需要在我的 Firestore collections 中查找,并使用 a.get() 查询进行查找。 这一直运行良好,直到 2020 年 3 月 13 日早上 function 开始抛出

2020-03-13 09:36:02.326 CET scheduledHooks 1042277797598294
Error: INTERNAL ERROR: Client is not yet ready to issue requests. 
at Firestore.get projectId [as projectId] (/srv/functions/node_modules/@google-cloud/firestore/build/src/index.js:401:19) 
at Query.toProto (/srv/functions/node_modules/@google-cloud/firestore/build/src/reference.js:1556:42)     at Query._get (/srv/functions/node_modules/@google-cloud/firestore/build/src/reference.js:1466:30) 
at Query.get (/srv/functions/node_modules/@google-cloud/firestore/build/src/reference.js:1457:21) 
at FirebaseActivitiesCollection.<anonymous> (/srv/functions/lib/collections/activities/FirebaseActivitiesCollection.js:32:40) 
at Generator.next (<anonymous>) at /srv/functions/lib/collections/activities/FirebaseActivitiesCollection.js:8:71 
at new Promise (<anonymous>) at __awaiter (/srv/functions/lib/collections/activities/FirebaseActivitiesCollection.js:4:12) 
at FirebaseActivitiesCollection.getActivitiesByInterval (/srv/functions/lib/collections/activities/FirebaseActivitiesCollection.js:27:16)

我无法跟踪我已经更改了任何内容,是否是 Firebase 进行了一些我应该注意的更改,或者我在此错误消息中遗漏了明显的线索?

我的其他云功能和 Firebase JavaScript SDK 仍然可以正常工作。

额外信息:相同的代码适用于我尚未部署的其他环境。 这当然导致我搜索已部署代码中的更改,但我找不到任何?

错误似乎是项目未正确连接和初始化。 根据此处的官方 API, 以下情况下会发生此错误:

返回此 Firestore 实例的项目 ID。 验证之前调用了initializeIfNeeded()

我建议你检查一下。 如果您仍然遇到问题,我会建议您联系Firebase 免费支持 既然你提到它一直工作到昨天早上,那么他们这边可能会有一些变化。

希望这可以帮助!

结果证明这是一个非常简单的 Firebase 初始化问题:

在我之前:

// Initialize firebase
admin.initializeApp(functions.config().firebase)

..它运行良好,直到不再运行。

我现在有:

// Initialize firebase
admin.initializeApp()

......它再次起作用

在运行一些涉及 firebase 的笑话测试时遇到了同样的错误。 问题是我没有设置GOOGLE_APPLICATION_CREDENTIALS环境变量。

因为我是在我的机器上本地运行它们,所以在运行测试之前在终端中导出这个变量就足够了:

export GOOGLE_APPLICATION_CREDENTIALS=/path/to/credentials/file.json

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM