Setting up dotenv in firebase functions

UPDATED 2019-06-04

I'm very sorry. This solution is wrong.

I found the correct way.

You should put a .runtimeconfig.json into the functions directory. Your dotenv variables move to .runtimeconfig.json with json format.

This is my solution.

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

The functionConfig() was called by your Firebase Function.

exports.helloWorld = functions.https.onRequest((request, response) => {
    response.send("someservice id is: " + functionConfig();

.env.json is like:

  "someservice": {
    "key":"THE API KEY",
    "id":"THE CLIENT ID"

Finally, run the command with the RUN_LOCALLY variable.

RUN_LOCALLY=1 firebase serve

When we will deploy functions, don't forget to update the environment configuration in Firebase using the .env.json.

The Firebase CLI currently doesn't allow you to set process environment variables on deployment. This may change in the future. The configuration vars it supports today (that you linked to) are not actually process environment variables - they stored somewhere else that's not actually the process environment.

If you absolutely need to be able to set process environment variables, you will have to deploy your function with gcloud, which means that you also won't be able to use the firebase-functions module to define your function. Start with the Google Cloud Functions documentation to learn about deployment from a Cloud perspective.

If you want to use the Firebase tools, I'd recommend that you find a different way to configure your function that doesn't involve process environment variables.

If you want to have your functions use the process.env variables, you you can set them by going to google cloud console and cloud functions. You will be able to find the deployed firebase functions there. You can select each function one by one and then set the environment variables there.