Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/firebase/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 使用云函数shell在本地运行云函数代码_Firebase_Firebase Realtime Database_Google Cloud Functions - Fatal编程技术网

Firebase 使用云函数shell在本地运行云函数代码

Firebase 使用云函数shell在本地运行云函数代码,firebase,firebase-realtime-database,google-cloud-functions,Firebase,Firebase Realtime Database,Google Cloud Functions,我正在尝试使用cloud functions shell在本地测试我的函数。我成功地使shell为我的代码工作。我发现这并不需要将我的代码部署到云端。但是,每当我通过shell运行函数时,它都可以正常工作,但它使用的是部署的代码,而不是本地代码(我使用示例代码中所示的控制台语句来检查这一点)。除非部署,否则无法调用本地代码 此外,在我的云函数中,我对实时数据库使用onCreate方法,并将其写回同一个实时数据库。当我使用shell在本地进行测试时,我为函数输入数据文件,然后写回实时数据库。因此,

我正在尝试使用cloud functions 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')
});

因为我使用的是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
现在,我们可以模拟本地未部署的云功能,并在本地进行测试

有关详细说明,请查看此中间帖子: