Comments (8)
This is not a regression. We follow semver for versioning, and 1.x.x
was a MAJOR
release with breaking changes. We purposely removed the ability for this poor practice. If you are overriding variables, you are not treating your environments as unique instances. For example, your database password for staging should be different than production. If you have values that are shared across deploys, they're either insecure or may not be environment variables to begin with.
This module respects process.env
over new values being set so if you really need to load two configs you can:
var dotenv = require('dotenv');
dotenv.config({path: '.env.test'}); // most important values
dotenv.config({path: '.env'}); // fill in the gaps
Since we've covered this topic multiple times, I'm going to add it to the FAQ
from dotenv.
Seems support for that was dropped when doing the 1.0.0 overhaul. Reverting to 0.5.1 works.
from dotenv.
If you want to stay on 1.x
you can instead do something like the following:
var envPath = '/path/to/.env';
if (process.env.NODE_ENV === 'test') {
envPath = '/path/to/.env.test';
}
require('dotenv').config({path: envPath});
from dotenv.
@motdotla that wont work, before 1.x we used to be able to "override" by providing .env along side a .env.test. For example, setting different database options in .env.test for when running with NODE_ENV=test, while still using all the other settings from .env.
What you recommend would simply load .env.test instead of .env, not "override" the values from .env with those in .env.test.
from dotenv.
@motdotla @maxbeatty do you mind keeping this issue open until this is fixed? This is a regression in 1.x. Or do you have no plan for supporting this anymore and officially dropping this from 1.x? Are you open to pull requests, etc.? Please reopen the issue.
Thanks
from dotenv.
@siboulet I don't think we are going to supporting this anymore. I know we are, for sure, not adding back .env.${NODE_ENV}
support and it looks like we are not adding override support #72. I have to say I was open to having override support was not a huge fan of the implementation in this PR. I would say if you can make a compelling enough argument for it you might be able to convince @maxbeatty and @motdotla
from dotenv.
Thanks for the thorough explanation. This make sense now. And for anyone that really needs to have the override feature and 1.x, she can always use the successive calls to dotenv.config() as mentioned in the comment above. That works for me.
Also might worth removing the mention of .env.$NODE_ENV here to remove any confusion: https://github.com/motdotla/dotenv/blob/master/lib/main.js#L7
Thanks
from dotenv.
I believe comment
Allows configuration before loading .env and .env.$NODE_ENV
Should be changed to account for this breaking change - tried to make .env.test
work for some time until reading more code & seeing it's not supported
from dotenv.
Related Issues (20)
- override system variables HOT 2
- Cannot find module 'node:url' or its corresponding type declarations HOT 4
- In ES6 DOTENV enviroment not getting HOT 2
- Use of dotenv in a cron job with ES6 modules HOT 2
- Another issue asking about multiple env files HOT 6
- Links in examples section on NPM package page are broken HOT 1
- DotenvPopulateOutput typing is incorrect HOT 1
- Request for help! HOT 3
- Possible regression: `USERNAME` in .env file does not update process.env on Windows HOT 9
- Using an array for config.path does not work HOT 1
- Crypto HOT 1
- Troubleshooting dotenv Preloading in GitHub Actions HOT 3
- Multiple paths in config: README incorrect? HOT 8
- Getting error while reinstalling the dotenv (updating to `16.4.4` should fix. apologies for the bad patch release of `16.4.3` everyone) HOT 28
- Source Other env files? HOT 3
- [Feature request] Write to dotenv file HOT 1
- Feature: Request for IntelliSense HOT 3
- Attempting to import into ES6 yields error HOT 6
- .env returns undefined or must a be string error in console HOT 2
- 2.0 Error: Dynamic require of "fs" is not supported
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dotenv.