Closed MarijnMensinga closed 2 weeks ago
It is already fixed in https://github.com/nodejs/node/pull/52406 But not yet released.
I tested the latest main
with the below test case, and seems the issue is not yet fixed with the mentioned PR above.
command
./node --env-file=./.env ./index.js
.env
TEST_VAR=ORIGINAL_VALUE
# TEST_VAR=UNEXPECTED_VALUE
#TEST_VAR=UNEXPECTED_VALUE
index.js
console.log(process.env.TEST_VAR)
output
UNEXPECTED_VALUE
Observation While using 2 commented lines, the issue is seems exist.
Proposal
Replace the lines starts with comments during parse (Dotenv::ParseContent
)
lines = std::regex_replace(lines, std::regex("^\\s*#.*$"), "");
CC: @anonrig @climba03003
Please reopen if needed.
Version
20.12.0+, 21.0.0+, 22.0.0
Platform
Darwin XXX.local 23.4.0 Darwin Kernel Version 23.4.0: Fri Mar 15 00:10:42 PDT 2024; root:xnu-10063.101.17~1/RELEASE_ARM64_T6000 arm64
Subsystem
No response
What steps will reproduce the bug?
Run with single env file:
nvm run 20.6.0 --env-file=.env index.js
=>OK
nvm run 20.11.1 --env-file=.env index.js
=>OK
nvm run 20.12.0 --env-file=.env index.js
=>WRONG2
nvm run 22.0.0 --env-file=.env index.js
=>WRONG2
Run with multiple env files:
nvm run 20.11.1 --env-file=.env --env-file=.env.local index.js
=>OK
nvm run 20.12.0 --env-file=.env --env-file=.env.local index.js
=>WRONG3
nvm run 22.0.0 --env-file=.env --env-file=.env.local index.js
=>WRONG3
Note: for simplicity I re-used the .env file, but using different files yields the same behaviourHow often does it reproduce? Is there a required condition?
Works as long as
--env-file
is presentWhat is the expected behavior? Why is that the expected behavior?
I expect only uncomment values in .env files to be parsed as actual values. So the output of the reproduction script should be "OK". This is in-line with every other .env parsing library. Also node v20.6.0 -> v20.11.1 behaves like that:
What do you see instead?
The last read commented values is outputed instead of the expected value:
Additional information
No response