Firebase 使用云函数shell在本地运行云函数代码
我正在尝试使用cloud functions shell在本地测试我的函数。我成功地使shell为我的代码工作。我发现这并不需要将我的代码部署到云端。但是,每当我通过shell运行函数时,它都可以正常工作,但它使用的是部署的代码,而不是本地代码(我使用示例代码中所示的控制台语句来检查这一点)。除非部署,否则无法调用本地代码 此外,在我的云函数中,我对实时数据库使用onCreate方法,并将其写回同一个实时数据库。当我使用shell在本地进行测试时,我为函数输入数据文件,然后写回实时数据库。因此,我实际上是在尝试编写代码并在本地运行,以写入云上的实时数据库。使用shell而不部署函数是否可以实现这一点 我的示例函数如下所示:Firebase 使用云函数shell在本地运行云函数代码,firebase,firebase-realtime-database,google-cloud-functions,Firebase,Firebase Realtime Database,Google Cloud Functions,我正在尝试使用cloud functions shell在本地测试我的函数。我成功地使shell为我的代码工作。我发现这并不需要将我的代码部署到云端。但是,每当我通过shell运行函数时,它都可以正常工作,但它使用的是部署的代码,而不是本地代码(我使用示例代码中所示的控制台语句来检查这一点)。除非部署,否则无法调用本地代码 此外,在我的云函数中,我对实时数据库使用onCreate方法,并将其写回同一个实时数据库。当我使用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')
});
因为我使用的是typescript,所以在运行云函数shell之前,我需要将代码转换为javascript
// run this command in your functions folder
'npm run-script build'
我认为它调用已部署代码的原因很明显,因为它实际上并没有调用已部署代码,而是调用在我部署到云时生成的本地传输代码。现在,我需要做的就是在运行CloudFunctions shell之前,在我的functions文件夹中使用下面的命令来传输我的代码
// run this command in your functions folder
'npm run-script build'
此构建在“lib”文件夹中生成传输的javascript代码。现在我们可以运行下面的命令来调用shell
firebase functions:shell
现在,我们可以模拟本地未部署的云功能,并在本地进行测试
有关详细说明,请查看此中间帖子: