admin管理员组

文章数量:1318156

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?

Share Improve this question edited Feb 13, 2022 at 23:52 maxichrome 691 silver badge9 bronze badges asked May 17, 2021 at 8:47 InspirallerInspiraller 3,8066 gold badges38 silver badges81 bronze badges 5
  • 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
Add a ment  | 

1 Answer 1

Reset to default 10

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 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 various NEXT_PUBLIC_ envs need to be set when the project is built.

本文标签: javascriptWhy are destructured environment variables undefined in NextjsStack Overflow