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

如何正确初始化使用云函数的firebase函数测试?

穆劲
2023-03-14

我正在使用

  • 节点14
  • FireBase-Functions-Test:0.2.3
  • FireBase-Admin:9.6.0
  • FireBase-函数:3.13.2
  • FireBase工具:9.8.0

所以我想使用firebase云函数对我的firestore触发器函数执行单元测试,我从这里的文档中阅读了步骤。

我想使用Firebase Emulator执行单元测试。所以我假设我将在脱机模式下初始化SDK。文件上说

如果您希望编写完全脱机的测试,您可以在没有任何参数的情况下初始化SDK:

所以我这样初始化它

import * as firebase from "firebase-functions-test";

const test = firebase();
const wrapped = test.wrap(myFunctions.onCreate);

// rest of my test code

但当我运行测试时,出现了以下错误:

错误:无法加载默认凭据。浏览https://cloud.google.com/docs/authentication/getting-started获取更多信息。

因此,即使我将使用Firebase仿真器(脱机),但似乎需要提供凭据,如果使用联机模式,这是一个步骤,如本文文档中所述

所以我像这样初始化SDK

import * as firebase from "firebase-functions-test";

const test = firebase({
    databaseURL: "https://xxx-b843e.firebaseio.com",
    projectId: "xxx-b843e",
}, "../../../service-account.json");

const wrapped = test.wrap(myFunctions.onCreate);

// rest of my test code

但当我运行测试时,我有另一个错误

{“严重性”:“warning”,“message”:“warning、FIREBASE_CONFIG和GCLOUD_PROJECT环境变量丢失。初始化firebase-admin将失败”}

错误:../../../service-account.json处的文件不存在,或者它不是文件。指示:没有这样的文件或目录,lstat'/users/xxx/documents/service-account.json'

服务帐户json文件不存在?我相信我这样把路定对了

service-account.json文件如下图所示,我从firebase project Overview-->project Setting-->service accounts-->generate new private key中获得

如果我想在firebase模拟器中初始化firebase函数测试SDK,我应该怎么做?

共有1个答案

越俊驰
2023-03-14
Error: The file at ../../../service-account.json does not exist

该错误意味着在运行时(启动仿真程序时)找不到service-account.json文件,因为相对路径不正确。

实际上,我使用intellisense引导我到service-account.json路径

intellisense建议的路径相对于执行代码的目录可能不正确。这是因为typescript在运行之前被编译,通常是从libdist文件夹中编译的,这意味着需要更改相对路径。

您可以使用绝对路径/my/absolutepath/to/service-account.json,这是解决此问题的一种快速方法,但不是很容易移植的。

使用不同数量的../../进行实验,以找到service-account.json的确切相对路径。请尝试使用:

  • ../../service-account.json
  • ../../../service-account.json
  • 等...(直到有效为止)

很可能只有几个../

 类似资料:
  • 有人能告诉我如何初始化存储,以便它工作并返回一个有效的对象。 我的Node.js版本是8.12.0,firebase版本是5.1.1

  • 1、什么是初始化函数 初始化函数的意思是,当你创建一个实例的时候,这个函数就会被调用。 比如: 当代码在执行 a = ClassA() 的语句时,就自动调用了 __init__(self) 函数。 而这个 __init__(self) 函数就是初始化函数,也叫构造函数。 初始化函数的写法是固定的格式:中间是 init,意思是初始化,然后前后都要有【两个下划线】,然后 __init__() 的括号中

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

  • 我有多个云函数使用一个值,基本上是这样的: 问题是我想要更改页脚内容(由返回),但为了这样做(就我所研究的),我首先必须在代码中更改它,然后部署使用的每个云函数(和),这样页脚在每种类型的电子邮件上看起来都是一样的。 当然,我可以使用同时部署所有函数,但是我们曾经是多个开发人员,我们中的一些人将函数更新到我们不知道index.js中哪些函数与GCP中的相同(大约20个函数),我必须检查每一个函数,

  • 问题内容: 初始化有序词典(OD)以便保留初始数据顺序的正确方法是什么? 题: 在初始化时是否会保留元组列表的顺序,元组的元组或列表的元组或列表的列表等的顺序(上述第二和第三示例)? 如何验证是否实际维持订单?由于a具有不可预测的顺序,如果我的测试向量幸运地具有与dict不可预测的顺序相同的初始顺序,该怎么办?例如,如果不是我写,我会错误地得出结论认为该顺序已保留。在这种情况下,我发现a是按字母顺

  • 我试图从WebClient中替换RestTemplate,因为根据Java文档,RestTemple将被弃用。Spring团队建议尽可能使用WebClient。 之前的RestTempalte代码如下 我想从WebClient替换RestTemplate。所以我实现了类WebClientConnection,如下所示 我使用这个依赖项 Webclient create 上有堆栈溢出错误 如何正确地