当前位置: 首页 > 知识库问答 >
问题:

从Firebase云函数调用Google Books API时的HttpsError

公孙宏远
2023-03-14
export const searchBooksOnline = functions.https.onCall(
    async function(data: any, context: functions.https.CallableContext) {
        const query: string = data.query;
        console.log(`Received query loud and clear: ${query}`);
        try {
            const res = await fetch(`https://www.googleapis.com/books/v1/volumes?q=${query}&key=MY-API-KEY`);
            const json = await res.json();
            return json;
        } catch(err) {
            throw new functions.https.HttpsError(err.status, 'Failed to search books online');
        }
    }
);
Unhandled error Error: Unknown error code: undefined.
    at new HttpsError (/srv/node_modules/firebase-functions/lib/providers/https.js:95:19)
    at exports.searchBooksOnline (/srv/lib/books.js:42:15)
    at func (/srv/node_modules/firebase-functions/lib/providers/https.js:267:32)
    at <anonymous>
    at process._tickDomainCallback (internal/process/next_tick.js:229:7)

这对我来说很神秘。我知道函数被正确调用是因为

>

  • 我可以在云功能日志“Received query Roud and Cleary:”中看到我的打印内容。

    当删除await fetch行并返回一些虚拟数据时,函数将正确执行。

  • 共有1个答案

    督嘉言
    2023-03-14

    对API的调用失败,您没有正确使用functions.https.HttpSerror。根据链接的API文档,构造函数的第一个参数必须是FunctionsErrorCode类型对象,该对象必须是以下字符串之一:

    “确定”“取消”“未知”“无效-参数”“截止日期-超过”“未找到”“已存在”“权限-拒绝”“资源耗尽”“失败-前提条件”“中止”“超出范围”“未实现”“内部”“不可用”“数据-丢失”“未经身份验证”

    这些字符串都映射回一个HTTP状态代码,因此您必须决定您实际上要告诉客户机什么。如果您只是想指出无法解决的故障,您可能需要“internal”。

     类似资料:
    • 在以前的GCP项目中,我们部署了基于Python的云功能(使用gcloud cli),理想情况下,我们希望继续使用Python实现Firebase云功能。所以我的问题是: > 是否可以部署基于Python的Firebase云功能?如果没有: 我们是否可以回到使用gcloud cli部署基于Python的GCP云函数,并且仍然让它们作为Firestore触发器工作?

    • BaaS.invokeFunction(functionName, params, sync) 参数说明 参数 类型 必填 描述 functionName Number 是 云函数名 params Object 否 传递给云函数的参数 sync Bool 否 是否等待返回函数执行结果,默认为 true 返回参数说明 参数 类型 描述 code Number code 为 0 时表示成功执行云函数,

    • 我正在从Flatter调用Firebase可调用函数,尽管我已经尝试了几乎所有的方法,但仍然无法处理可调用函数抛出的错误。 我的可调用函数如下所示: 然后,我在flatter中创建了一个Future来调用我的可调用函数: 最后,我用另一个错误处理程序从一个文本按钮调用我的未来: 当我调用我的函数并得到一个错误时,我的代码立即跳转到-并停止在-Flutter的(位于)。 它停在函数处的类,就在这里:

    • 我编写了一个Firebase云函数,可以通过REST API访问该函数。代码如下所示。 我需要做的是,当用户通过“Web服务URL”从前端提交一些值时。 1)我需要将这些数据保存在Firebase实时数据库中。 2.)我参考了网上的几个教程,不明白在下面的代码中做了什么。

    • 在我正在开发的Firebase web应用程序中,我想从邮件地址获取用户ID。为此,我正在尝试编写一个云函数。但它不起作用,或者我没有正确使用它。以下是当前代码(基于我在网上找到的一些示例): 运行“firebase deploy”时,我看不到任何问题。然后,我尝试用各种方法测试该功能,就像我在本教程之后编写的演示应用程序一样。 例如(现有和不存在的邮件地址): 但在任何一种情况下,我都不会在We

    • danger 以下操作仅适用于 SDK version >= 1.3.0a,该版本还在内测阶段,仅面向受邀用户开放,详情请咨询客服 BaaS.invokeFunction(functionName, params, sync) 参数说明 参数 类型 必填 说每个 functionName String 是 云函数名 params Object 否 传递给云函数的参数 sync Bool 否 是否等