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?
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?
-
Remove the
{}
and try again.{}
are used when there are multiple imports – Himanshu Saxena Commented May 17, 2021 at 8:49 - @HimanshuSaxena This doesn't explain why node result is undefined. This is es6 usage - using destructuring and otherwise works on everything else. – Inspiraller Commented May 17, 2021 at 8:56
- Can you show the actual code you tried? I mean you used some console.log, right? Or how do you know the api_key is undefined? Can you create minimal example which proves this? – Molda Commented May 17, 2021 at 9:32
-
Both lines should work the same. How exactly are you running this script? In what environment? How do you load the
.env
file? Are you using a transpiler/build pipeline? – Bergi Commented May 17, 2021 at 10:47 - @Bergi I am using Next.js. My console.log is in my react ponent. – Inspiraller Commented May 17, 2021 at 11:46
1 Answer
Reset to default 10From 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 thatprocess.env
is not a standard JavaScript object, so you’re not able to use object destructuring.
and for client-side React ponents
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 variousNEXT_PUBLIC_
envs need to be set when the project is built.