firebase - 使用云函数外壳在本地运行云函数代码
问题描述
我正在尝试使用云函数外壳在本地测试我的函数。我成功地使外壳程序适用于我的代码。我看到这不需要将我的代码部署到云中。但是,每当我通过 shell 运行该函数时,它工作正常,但它使用的是部署的代码,而不是本地代码(我正在使用控制台语句检查这一点,如示例代码所示)。除非我部署,否则我无法调用本地代码。
此外,在我的云函数中,我使用 onCreate 方法创建实时数据库并回写到同一个实时数据库。当我使用 shell 进行本地测试时,我为函数输入数据文件并写回实时数据库。所以我实际上是在尝试编写代码并在本地运行它以写入云上的实时数据库。这是否可以在不部署功能的情况下使用 shell 来实现?
我的示例函数如下所示:
export const myCloudFunction = functions.database.instance(getDatabaseIdentifier()).ref(PATH).onCreate(async (snapshot, context) => {
console.log('local code invoked')
// or
console.log('deployed code invoked')
});
解决方案
我想通了,因为我使用的是打字稿,我需要在运行云函数 shell 之前将我的代码转换为 javascript。
我认为它调用已部署代码的原因很明显,因为它实际上并没有调用已部署代码,而是调用了在我部署到云时生成的本地转译代码。现在我需要做的就是在我运行云函数 shell 之前,在我的函数文件夹中使用以下命令转换我的代码。
// run this command in your functions folder
'npm run-script build'
此构建在“lib”文件夹中生成转译的 javascript 代码。现在我们可以运行以下命令来调用 shell。
firebase functions:shell
现在我们可以模拟本地未部署的云功能并在本地进行测试。
查看此中等帖子以获取详细说明: https ://medium.com/@moki298/test-your-firebase-cloud-functions-locally-using-cloud-functions-shell-32c821f8a5ce
推荐阅读
- java - 在这个使用扫描程序类和 Java 制作的简单计算器程序中,用字符串“中止”一个 while 循环
- javascript - Javascript 在 wordpress 中调用 Stripe 按钮
- c# - 使用 EF Core DB First Design 时向模型添加修改
- java - 具有自己的变量的子类的复制构造函数
- android - 带有缺口/显示切口的Android导航抽屉问题
- javascript - 如果单击按钮,则显示两种形式之一
- javascript - 显示隐藏多个工具提示反应材料
- calculated-columns - 基于上一行的计算列的反向计划计算
- c# - c# ushort uint16 选择哪种类型
- c# - Android中的监听器