Firebase Cloud Functions:无法在“窗口”上执行“获取”:服务中的非法调用

Posted

技术标签:

【中文标题】Firebase Cloud Functions:无法在“窗口”上执行“获取”:服务中的非法调用【英文标题】:Firebase Cloud Functions: Failed to execute 'fetch' on 'Window': Illegal invocation at Service 【发布时间】:2021-01-18 07:49:59 【问题描述】:

我有一个与 Firebase Cloud Functions 配合使用的 ReactJS Web 应用程序。 一切都运行良好很长一段时间,直到我最近开始对代码进行一些维护,突然所有的 Callable 函数都给了我这个错误:

在“窗口”上执行“获取”失败:服务中的非法调用

它不执行任何服务器代码,所以它在客户端上,我不确定还有什么可以尝试的。我可以毫无问题地从 GCP 调用函数。

编辑:

TL:DR; Firebase 7.22.x 版中断了我的 fetch 调用。在此之前的任何版本(我测试低至 7.5.x)都可以正常工作。

所以在调试越来越多之后,我决定在我的 package.json 中使用更多受限版本。 起初我怀疑 Firebase、React 或 TS 可能会破坏某些东西。

我开始使用 Firebase 版本。在我的 package.json 中,我使用的是 Minor Versioning,版本设置为 ^7.5.0。 我通过使用补丁版本控制(~7.5.0)进一步限制了版本控制,突然间,这个错误消失了!

为了确定哪个版本出了问题(我也想尽可能使用最新版本),我开始将版本递增到最新版本(此时为 7.22.x)。 我发现适用于我的最新版本是 ~7.11,这就是我要一直使用的版本,直到根本原因得到解决。

【问题讨论】:

要获得更多上下文,是否有更多来自错误消息的信息,例如行号或文件名? @MrTech 不幸的是,没有。我必须在 Firebase 代码中放置断点才能理解这是实际消息。在他们的代码中,他们用 try catch 包装了 fetch 调用,并只返回一条通用消息“内部”,因此即使到达那个消息也非常耗时...... @MrTech 我尝试进行更多调试以找到更多信息,这就是我使用 Chrome DevTools 得到的全部信息:service.ts 中的第 190 行。您可以通过跟踪可调用函数的调用来到达那里 我遇到了同样的问题,@MaxGlukhov。感谢您的解决方法! 【参考方案1】:

它在 7.22.1 及更高版本中似乎已修复(基于其发行说明): https://firebase.google.com/support/release-notes/js#version_7221_-_october_5_2020

【讨论】:

以上是关于Firebase Cloud Functions:无法在“窗口”上执行“获取”:服务中的非法调用的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 中为 Firebase 使用 Cloud Functions

Cloud Functions for Firebase 超时

Firebase Cloud Functions https.onCall 完成状态码:204

Cloud Functions for Firebase onWrite 超时

Easy Firebase Cloud Functions 组织

在 Firebase Cloud Functions 中创建 PDF