Get the value of an environment variable
Get the value of an environment variable
Section titled “Get the value of an environment variable”This works for the following environments: CRA, node, VITE, deno.
const ENVIRONNEMENT_PREFIX = { node: '', CRA: 'REACT_APP_', vite: 'VITE_', deno: '',} as const
type EnvType = keyof typeof ENVIRONNEMENT_PREFIX
/** * Retrieves the value of an environment variable. * * @param {string} variable - The name of the environment variable to retrieve. * @param {('node'|'CRA'|'vite')} [env='node'] - The environment from which to retrieve the variable. * 'node' and 'CRA' will use process.env, 'vite' will use import.meta.env. * * @throws {TypeError} Will throw an error if the environment variable is not set. * * @returns {string} The value of the environment variable. */export async function getEnv( variable: string, env: EnvType = 'node',): Promise<string> { const prefix = ENVIRONNEMENT_PREFIX[env] let value: string = '' if (env === 'node' || env === 'CRA') { value = (process.env[variable] || process.env[`${prefix}${variable}`]) ?? '' } if (env === 'vite') { value = import.meta.env[variable] || import.meta.env[`${prefix}${variable}`] }
if (env === 'deno') { try { const { load } = await import( // @ts-expect-error 'https://deno.land/std@0.213.0/dotenv/mod.ts' ) const env = await load() value = env[variable] ?? '' } catch (error) { console.error("Error loading Deno's `dotenv` library:", error) } }
if (value === '') { throw new TypeError(`It seems like the variable "${variable}" is not set in the environment (\`.env\` file). @Dev: Did you forget to execute "cp .env.dev .env" and adjust variables in the .env file to match your own environment ?`) } return value}