如何从代码中查找是否在本地运行的Firebase函数

时间:2019-05-17 12:00:51

标签: javascript firebase google-cloud-functions

我想将一个URL分配给firbase函数

const localUrl = localUrlBase + apiEndpoint
const onlineUrl = onlineURLBase + apiEndpoint 
const urlToUse = process.env.dev? localUrl : onlineUrl

现在,当我在本地运行函数时,我期望它分配localUrl,但它分配onlineUrl

如何从代码中知道函数是在线托管的还是在本地运行的。

2 个答案:

答案 0 :(得分:0)

方法:

这可以通过将参数传递给节点来完成。在此示例中,我们可以将参数dev与常规命令一起传递以运行节点应用程序。我将使用非常通用的命名约定(app.js),但是您将不得不更改名称以适合您的实际文件路径。

运行包含功能的文件时:node app.js dev

我们传递参数dev,并且可以在运行process.argv的第3个位置的node.js应用程序中访问它。

在文件中:

const env = process.argv[2] === "dev"

const localUrl = localUrlBase + apiEndpoint;
const onlineUrl = onlineURLBase + apiEndpoint;
const urlToUse = env ? localUrl : onlineUrl;   

然后仅检查是否已创建env变量。

答案 1 :(得分:0)

根据您的代码(如果已设置)

const process.env.dev = true;

在使用“ process.env.dev”的位置之前的任何地方,然后应使用“ localUrl”,否则将始终使用“ onlineUrl”

您可以使用以下console.log检查最终将哪些值设置为“ urlToUse”变量

const urlToUse = process.env.dev? localUrl : onlineUrl
if(console) console.log(urlToUse);

并检查浏览器的控制台以查看日志。

您还可以使用以下技巧动态设置“ process.env.dev”

if (location.hostname === "localhost" || location.hostname === "127.0.0.1")
process.env.dev = true;
else
process.env.dev = false;

但是,“ location.hostname”的值可能会根据您的开发/主机环境配置而有所不同。

相关问题