Comments (5)
Hi @Rolandisimo, what would you suggest as an improved error message here?
from envalid.
I'm running into the same issue. How can you specify valid choices for non-standard environments? As an example I need to tell it jesttest
is a valid NODE_ENV
from envalid.
@cmbirk here you can see the default values for NODE_ENV https://github.com/af/envalid#envalidcleanenvenvironment-validators-options
From the source code:
// If validation for NODE_ENV isn't specified, use the default validation:
if (!varKeys.includes('NODE_ENV')) {
defaultNodeEnv = validateVar({
name: 'NODE_ENV',
spec: str({ choices: ['development', 'test', 'production'] }),
rawValue: env.NODE_ENV || 'production'
})
}
Because in my project we have a qa
environment, I had to specify it in the choices for some of the related test to work.
My workaround in Typescript:
// declarations.d.ts
declare type NODE_ENVIRONMENTS = "development" | "production" | "qa" | "test";
// env_variables.ts
NODE_ENV: str({
choices: ["qa", "production", "development", "test"] as NODE_ENVIRONMENTS[],
default: "development" as NODE_ENVIRONMENTS,
}),
from envalid.
@af I wasn't sure about a good approach without refactoring the code too much. So, as an intermediate step I think it's not unreasonable to add a check for the specific NODE_ENV
key inside validateVar
function. Afterwards a message specifying that the developer might need to specify choices for NODE_ENV
when calling cleanEnv
.
What do you think?
from envalid.
As of v7.0.0-beta.1, this library no longer ships a default NODE_ENV validator, so you can specify your own with whichever choices you wish. Here's a test case with an example: https://github.com/af/envalid/blob/master/tests/basics.test.ts#L138
This doesn't change the messaging of course, but if I understand correctly, if fixes the root issue here. If you think the error messages could use improvement still, please open up another PR or issue for that
from envalid.
Related Issues (20)
- Add parse options to str() HOT 1
- array validator HOT 1
- 7.3.0 breaking change? HOT 11
- Add option to load validator specs from .example.env file HOT 1
- Access value of env object by name HOT 1
- envalid in react-native for preview crashes without giving description of missing env HOT 2
- testOnly setting variable to Symbol instead of failing HOT 5
- Pick from validators HOT 2
- str({ devDefault: undefined }) generates an incorrect type HOT 2
- Require environment variables only if `NODE_ENV` is not set to `test` HOT 2
- Skipping env var validation in tests HOT 1
- Prevent process exit during tests HOT 1
- makeExactValidator is not exported HOT 1
- Combine envalid with Docker secrets
- Issue with envalid in test. HOT 1
- Typescript, typing the environment variables returns never HOT 1
- Waiting for an async reporter callback HOT 3
- How to see description and help for optional env? HOT 4
- Add a warn option
- devDefault does not work when NODE_ENV is undefined HOT 1
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 envalid.