在 firebase 函数中设置 dotenv

iRo*_*tia 6 node.js firebase google-cloud-functions

我正在尝试将我制作的微型 node-express 应用程序移动到 firebase 函数中。

该文件有dotenv变量。早些时候我认为如果我只是部署并依赖 dotenv,它会起作用,但事实并非如此..

所以,我去了firebase的环境配置文章,了解如何设置.env

哪些国家通过做这样的事情来设置事物

firebase functions:config:set someservice.key="THE API KEY" someservice.id="THE CLIENT ID"
Run Code Online (Sandbox Code Playgroud)

但是我有这么多的环境配置,并且做了一些看起来很麻烦的任务。

所以让我们说这是环境文件

# App port Address
PORT = 8080

# Google Secret 
GOOGLE_CALLBACK_URL =   http://localhost:8080/auth/google/callback
GOOGLE_CLIENT_ID = 4048108-bssbfjohpu69vl6jhpgs1ne0.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET = lTQHpjzY57oQpO

# Client Address 
CLIENT_ADDRESS = http://localhost:3000/


# Meetup Secret 
MEETUP_CALLBACK_URL = http://localhost:8080/auth/meetup/callback
MEETUP_CLIENT_ID = ef6i9f7m6k0jp33m9olgt
MEETUP_CLIENT_SECRET = sk3t5lnss2sdl1kgnt

#EventBrite Secret 
EVENTBRITE_CALLBACK_URL = http://localhost:8080/auth/eventbrite/callback
EVENTBRITE_CLIENT_ID = UU2FXKGYHJRNHLN
EVENTBRITE_CLIENT_SECRET = NA55QG52FAOF6GDMLKSJBKYOPIGQU4R46HHEU4 
Run Code Online (Sandbox Code Playgroud)

我如何最好地设置,以便当我执行firebase firebase serve --only 功能时,托管它不会引发任何错误,例如

OAuth2Strategy 需要一个 clientID 选项

d-_*_*_-b 27

截至2022 年 2 月 16 日, Firebase 现在原生支持.env, .env.prod, .env.dev,.env.local文件!

https://firebase.google.com/docs/functions/config-env

在相应的环境中设置变量,然后运行firebase use devfirebase use prod部署之前。

您的变量可以通过以下方式访问process.env.VARIABLE_NAME

  • 惊人的新功能!有一个问题 - 使用本地模拟器时我需要有一个 .env.local。当我没有这个文件时,我只是浪费了一个小时以为它不起作用。我还推荐新的 $ firebasefunctions:config:export 命令通过 firebase-tools 下载现有环境。 (3认同)

小智 6

更新 2019-06-04

我非常抱歉。这个解决方案是错误的。

我找到了正确的方法。

/sf/answers/3154498651/

您应该将 a.runtimeconfig.json放入函数目录中。您的 dotenv 变量以.runtimeconfig.jsonjson 格式移动。


这是我的解决方案。

const functionConfig = () => {
    if (process.env.RUN_LOCALLY) {
        const fs = require('fs');
        return JSON.parse(fs.readFileSync('.env.json'));
    } else {
      return functions.config();
    }
};
Run Code Online (Sandbox Code Playgroud)

functionConfig()被你的火力地堡的功能调用。

exports.helloWorld = functions.https.onRequest((request, response) => {
    response.send("someservice id is: " + functionConfig().someservice.id);
});
Run Code Online (Sandbox Code Playgroud)

.env.json 就好像:

{
  "someservice": {
    "key":"THE API KEY",
    "id":"THE CLIENT ID"
  }
}
Run Code Online (Sandbox Code Playgroud)

最后,使用RUN_LOCALLY变量运行命令。

RUN_LOCALLY=1 firebase serve
Run Code Online (Sandbox Code Playgroud)

当我们部署函数时,不要忘记使用.env.json.


Dou*_*son 3

Firebase CLI 目前不允许您在部署时设置流程环境变量。这在未来可能会改变。它今天支持的配置变量(您链接到的)实际上并不是流程环境变量 - 它们存储在实际上不是流程环境的其他地方。

如果您绝对需要能够设置流程环境变量,则必须使用 gcloud 部署函数,这意味着您也无法使用 firebase-functions 模块来定义函数。从Google Cloud Functions文档开始,从云的角度了解部署。

如果您想使用 Firebase 工具,我建议您找到一种不涉及流程环境变量的不同方法来配置函数。