NODE_ENV behavior inconsistency
Unanswered
Oriental posted this in #help-forum
OrientalOP
Hello, I read the documentation on environment variables but I still don't understand why this is happening. Start a new project and add the following server-side code. 
The environment variable parsed by the Zod schema gets
Result when running
Result when running
const env = z.object({
  NODE_ENV: z.enum(["development", "production", "test"]),
}).parse(process.env);
const assigned = process.env
const key = 'NODE_ENV'
console.log({
  direct: process.env.NODE_ENV,
  indirect: assigned.NODE_ENV,
  parsed: env.NODE_ENV,
  keyed: assigned[key],
})The environment variable parsed by the Zod schema gets
test, but not the other methods, with build it is even weirder.Result when running
NODE_ENV=test next dev,  {
  direct: 'development',
  indirect: 'development',
  parsed: 'test',
  keyed: 'development',
}Result when running
NODE_ENV=test next build, I get {
  direct: 'production',
  indirect: 'production',
  parsed: 'test',
  keyed: 'test',
}1 Reply
OrientalOP
This behavior isn't limited to Zod, I get the same if I use ArkType, or the following
What is supposed to be the "correct" behavior? Should
let dynamic = null
for (const key in process.env) {
  if (key === 'NODE_ENV') {
    dynamic = process.env[key]
  }
}
console.log(dynamic) // test for both next dev and next buildWhat is supposed to be the "correct" behavior? Should
NODE_ENV be set?