我正在尝试使用云函数shell在本地测试我的函数。我成功地使shell功能适用于我的代码。我发现这并不需要将我的代码部署到云中。但是,每当我通过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')
});发布于 2018-11-14 20:47:00
我想清楚了,因为我使用的是类型记录,在运行云函数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
https://stackoverflow.com/questions/53307012
复制相似问题