Dotenv package fails to load environment variables when CLI is executed outside project directory
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);
hi @mathiasgheno, cool idea.
have you seen https://github.com/dotenvx/dotenvx ?
will it do what you need here?
Hello @motdotla, not yet.
I'll study it.
as this is cli related I am going to close and recommend our dotenvx cli going forward.