我正在尝试使用云功能外壳在本地测试我的功能。我成功地使外壳程序适用于我的代码。我看到这不需要将我的代码部署到云中。但是,每当我通过外壳运行该函数时,它就可以正常工作,但它使用的是已部署的代码,而不是本地代码(我通过使用示例代码中所示的控制台语句来对此进行检查)。除非部署,否则我将无法调用本地代码。
此外,在我的云函数中,我将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')
});
答案 0 :(得分:1)
我弄清楚了,因为我正在使用打字稿,因此我需要在运行云函数外壳之前将代码转换为javascript。
我之所以认为它调用已部署的代码的原因很明显,因为它实际上不是在调用已部署的代码,而是在我部署到云时生成的本地转译代码。现在,我需要做的就是在运行cloud functions shell之前,使用下面的命令在functions文件夹中转换我的代码。
// run this command in your functions folder
'npm run-script build'
此版本在“ lib”文件夹中生成已转换的javascript代码。现在我们可以运行以下命令来调用外壳程序。
firebase functions:shell
现在,我们可以模拟未部署的本地云功能并在本地进行测试。
检查此中等职位以获取详细说明: https://medium.com/@moki298/test-your-firebase-cloud-functions-locally-using-cloud-functions-shell-32c821f8a5ce