firebase / firebase-tools

The Firebase Command Line Tools
MIT License
3.97k stars 917 forks source link

Hosting doesn't take dotenv files from different environments #7207

Open yanqianglu opened 1 month ago

yanqianglu commented 1 month ago

[REQUIRED] Environment info

firebase-tools: 13.10.0

Platform: macOS

[REQUIRED] Test case

See "Steps to reproduce" below.

[REQUIRED] Steps to reproduce

# .firebaserc
{
  "projects": {
    "prod": "my-project-prod",
    "stg": "my-project-stg"
  }
}
# .envfile
FOO_1=BAR
# .env.stg file
FOO_2=BAR

[REQUIRED] Expected behavior

It should take the .env.stg file as part of the build.

> firebase use stg && firebase deploy

  ▲ Next.js 14.2.3

  - Environments: .env, .env.stg

   Creating an optimized production build ...

 ✓ Compiled successfully

   Linting and checking validity of types ...

...

i  functions: Loaded environment variables from .env, .env.stg.

[REQUIRED] Actual behavior

It only takes .env file and ignored .env.stg file. The .env.stg is included as part of the functions deployment though.

> firebase use stg && firebase deploy

  ▲ Next.js 14.2.3

  - Environments: .env

   Creating an optimized production build ...

 ✓ Compiled successfully

   Linting and checking validity of types ...

...

i  functions: Loaded environment variables from .env, .env.stg.
google-oss-bot commented 1 month ago

This issue does not have all the information required by the template. Looks like you forgot to fill out some sections. Please update the issue with more information.

chalosalvador commented 3 weeks ago

@yanqianglu If your pages use SSR you can rename your dotenv file to .env.<PROJECT-ID> instead of .env.<PROJECT-ALIAS> and you should be able to read the environment variables in that file. You can read more about it in the Parameterized configuration for Cloud Functions.

I have opened a PR (#7323) to handle the issue when using SSG in Next.js. But the idea is the same, we would read the values from the .env.<PROJECT-ID>.