.gitignore file to avoid pushing secrets to your repository.Nuxt CLI has built-in dotenv support in development mode and when running nuxt build and nuxt generate.
In addition to any process environment variables, if you have a .env file in your project root directory, it will be automatically loaded at dev, build and generate time. Any environment variables set there will be accessible within your nuxt.config file and modules.
MY_ENV_VARIABLE=hello
.env or removing the .env file entirely will not unset values that have already been set.If you want to use a different file - for example, to use .env.local or .env.production - you can do so by passing the --dotenv flag when using the Nuxt CLI.
npx nuxt dev --dotenv .env.local
When updating .env in development mode, the Nuxt instance is automatically restarted to apply new values to the process.env.
After your server is built, you are responsible for setting environment variables when you run the server.
Your .env files will not be read at this point. How you do this is different for every environment.
This design decision was made to ensure compatibility across various deployment environments, some of which may not have a traditional file system available, such as serverless platforms or edge networks like Cloudflare Workers.
Since .env files are not used in production, you must explicitly set environment variables using the tools and methods provided by your hosting environment. Here are some common approaches:
$ DATABASE_HOST=mydatabaseconnectionstring node .output/server/index.mjs.bashrc or .profile.runtimeConfigwon't pick up environment variables that don't start with NUXT_ in production (https://nuxt.com/docs/guide/going-further/runtime-config#environment-variables).For local production preview purpose, we recommend using nuxt preview since using this command, the .env file will be loaded into process.env for convenience. Note that this command requires dependencies to be installed in the package directory.
Or you could pass the environment variables as arguments using the terminal. For example, on Linux or macOS:
DATABASE_HOST=mydatabaseconnectionstring node .output/server/index.mjs
Note that for a purely static site, it is not possible to set runtime configuration config after your project is prerendered.
appConfig may be a better choice. You can define appConfig both within your nuxt.config (using environment variables) and also within an ~/app.config.ts file in your project.