javascriptenvironment-variablesviteenv-file

How to load environment variables from .env file using Vite


I want to load environment variables from the .env file using Vite

I used the import.meta.env object as mentioned in Docs

.env file:

TEST_VAR=123F

when trying to access this variable via the import.meta.env -> import.meta.env.TEST_VAR it returns undefined.

so, how can I access them?


Solution

  • According to the docs, you need to prefix your variables with VITE_:

    To prevent accidentally leaking env variables to the client, only variables prefixed with VITE_ are exposed to your Vite-processed code.

    If you are trying to access env vars outside your app source code (such as inside vite.config.js), then you have to use loadEnv():

    import { defineConfig, loadEnv } from 'vite';
    
    export default ({ mode }) => {
        // Load app-level env vars to node-level env vars.
        process.env = {...process.env, ...loadEnv(mode, process.cwd())};
    
        return defineConfig({
          // To access env vars here use process.env.TEST_VAR
        });
    }
    

    For SvelteKit

    // vite.config.js
    
    import { sveltekit } from '@sveltejs/kit/vite';
    import { defineConfig, loadEnv } from 'vite';
    
    /** @type {import('vite').UserConfig} */
    export default ({ mode }) => {
        // Extends 'process.env.*' with VITE_*-variables from '.env.(mode=production|development)'
        process.env = {...process.env, ...loadEnv(mode, process.cwd())};
        return defineConfig({
            plugins: [sveltekit()]
        }); 
    };