dotenv icon indicating copy to clipboard operation
dotenv copied to clipboard

Dotenv package fails to load environment variables when CLI is executed outside project directory

Open mathiasgheno opened this issue 1 year ago • 2 comments

Not sure if this is a bug. You can access the minimal reproduction repository here. In the README.md of the repo there is the explanation. Putting bellow for historical purpose.

Context

Want to create a local CLI that use dotenv package.

Steps to reproduce

npm link

Consider you will have access to the CLI dotenv_bin_load from your terminal.

Inside the folder of the project, run:

dotenv_bin_load

You will get the ACCESS_TOKEN normally.

Now, run the same command outside the folder of the project.

cd ..
dotenv_bin_load

You will not get the ACCESS_TOKEN.

Working Solution

Using the common.js config and renaming the .js to .mjs and using the path resolve to find the .env file.

#! /usr/bin/env node

const path = require('path');
const baseDir = path.resolve(__dirname, '../');
const envPath = path.join(baseDir, '.env');

require('dotenv').config({path: envPath});
console.log(process.env.ACCESS_TOKEN);

mathiasgheno avatar Jun 22 '24 06:06 mathiasgheno

hi @mathiasgheno, cool idea.

have you seen https://github.com/dotenvx/dotenvx ?

will it do what you need here?

motdotla avatar Jun 22 '24 14:06 motdotla

Hello @motdotla, not yet.

I'll study it.

mathiasgheno avatar Jun 24 '24 02:06 mathiasgheno

as this is cli related I am going to close and recommend our dotenvx cli going forward.

motdotla avatar Nov 16 '24 20:11 motdotla