1

I am creating a nextjs website. In my js file, I am fetching API data and I am assigning the token via .env.local file. But when i tried to access .env variable that I have created, it's not returning anything. I mean, it returns empty/undefined.
My js file code:

export async function getStaticProps() {
    const response = await fetch(`https:/mywebsite.com?token=${process.env.PRAISES_TOKEN}`);
    const body = await response.json();
    console.log(body);
    
    return {
        props: {
            naats: body
        }
    }
}

.env.local

PRAISES_TOKEN=MY_TOKEN

My nextjs project version is 12.
In my git bash, it returns like this, no value of variable:

https://website.com?token=

Update: The thing i have figured out is that when i assign any token/hash to env variable, then variable returns undefined. If i assign https url then variable works fine. So, i though to assign full url with token like https://website.com?token=jhasvdiasvdjkagdg8catscuas, but it doesn't work and returns undefined. Variable only works with https url values but without parameters. This is strange.

Can someone please help me with this issue? I don't wanna expose my token/api_token to browser/public.

12
  • Have you tried logging your env outside of getstatisprops function? Commented Jan 13, 2022 at 13:30
  • Also, remember to restart your server whenever you change envs Commented Jan 13, 2022 at 13:31
  • @PCPbiscuit yes, It returns undefined in console log. I do always restart Commented Jan 13, 2022 at 13:33
  • Your code looks fine, it should work. Maybe you need to wrap value with "? Also, are you sure you are not destructuring process.env? Are you 100% using it inlined, like in your example? Or not accessing it using dynamic key stored in some variable? Commented Jan 13, 2022 at 14:15
  • @Danila Wrapping in " would be excessive and unnecessary but I agree with you this code should work. I just tried it out Commented Jan 13, 2022 at 14:18

1 Answer 1

3

Next.js will automatically expand variables $VAR inside of your .env* files, so you need to escape $ signs with \, so if you token is $abcd$ef it should look like that: PRAISES_TOKEN=\$abcd\$ef

It is also good idea to wrap value with " quotes, because tokens also usually have other symbols like = and etc:

PRAISES_TOKEN="\$abcd\$ef"

More info

Sign up to request clarification or add additional context in comments.

1 Comment

It worked, I was only wrapping it in double quotes. Now, as you told me about escaping $ sign, it worked in this way. Thanks buddy

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.