Why are destructured environment variables undefined in Next.js?

Viewed 1017

In my Next.js app I've created a .env file with a variable named API_KEY.

Destructuring the value results in undefined, as shown here:

const { API_KEY } = process.env; // = undefined
const key = process.env.API_KEY; // = 'value'

Can someone please explain why process.env isn't populated with the correct value here?

1 Answers

From the docs:

Note: In order to keep server-only secrets safe, Next.js replaces process.env.* with the correct values at build time. This means that process.env is not a standard JavaScript object, so you’re not able to use object destructuring.

and for client-side React components

The value will be inlined into JavaScript sent to the browser because of the NEXT_PUBLIC_ prefix. This inlining occurs at build time, so your various NEXT_PUBLIC_ envs need to be set when the project is built.

Related