util.parseEnv and --env-file keep a leading UTF-8 BOM in the first key
Les mainteneurs répondent en général sous 1 jour
Évaluation
- Difficulté
- 2/5
- Temps estimé
- 1-3 heures
- Accessibilité débutants
- 78/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- javascript
- Domaine
- backend
Piste de recherche
Commencez par lire src/node_dotenv.cc, en particulier Dotenv::ParseContent à la ligne citée dans l’issue. Vérifiez les tests existants concernant le comportement de --env-file et de util.parseEnv avec une entrée commençant par un BOM UTF-8. Le travail est terminé lorsque les deux points d’entrée analysent la première clé sans le BOM et préservent les valeurs attendues.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Version
v24.18.0 (the code is the same on main)
Platform
Windows 11 x64 (not platform-specific; the file bytes are what matter)
Subsystem
dotenv (--env-file, util.parseEnv)
What steps will reproduce the bug?
printf '\xef\xbb\xbfA=1\r\nB=2\r\n' > .env
node --env-file=.env -e "console.log(process.env.A, process.env.B)"
node -e "console.log(require('util').parseEnv('A=1\nB=2'))"
Such files are common on Windows: PowerShell 5.1 Set-Content -Encoding utf8 / Out-File -Encoding utf8 and Notepad's "UTF-8 with BOM" write a leading EF BB BF.
How often does it reproduce? Is there a required condition?
Always, when the file starts with a UTF-8 BOM.
What is the expected behavior? Why is that the expected behavior?
1 2 and { A: '1', B: '2' }: the BOM is an encoding marker, not part of the first key. The dotenv package returns { A: '1', B: '2' } for the same bytes, and Node already skips a BOM when loading CommonJS/ESM sources and JSON.
What do you see instead?
undefined 2
{ B: '2', 'A': '1' }
The first variable is silently lost under its real name.
Additional information
Dotenv::ParseContent (src/node_dotenv.cc:147) strips \r but not a leading BOM, so it stays in the first key. Skipping a leading \xEF\xBB\xBF at the start of the input there would fix both --env-file and util.parseEnv. This also affects tools that moved to util.parseEnv, e.g. Vite's .env loading.
- Langage dominant
- JavaScript
- Étoiles
- 123k
- Forks
- 39.3k
- Merge moyen
- 4 j 15 h
- PR mergées (30 j)
- 238
Préparer son environnement
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de nodejs/node
-
node:internal/inspector/network_http: `TypeError: Missing dataLength` in event when response uses `setEncoding()`Peut-être pris @lazerg l’a pris il y a 25 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
nodejs/node#66551 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
[Docs] `process.loadEnvFile()` does not document behaviour when variables already existPeut-être pris @Sepandard l’a pris il y a 35 jours. Ouvertedoc
Difficulté 1/5 Moins d'une heure Accessibilité débutants 90/100
Les mainteneurs répondent en général sous 1 jour
-
Stream.prototype.forEach will block in first promise in queue before read more chunkPeut-être pris @mmustafasenoglu l’a pris il y a 36 jours. Ouvertedoc
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
Les mainteneurs répondent en général sous 1 jour
-
nodejs 26.8.2 fails to build with clang/LLVMPeut-être à nouveau libre @btyagi18 l’a pris il y a 22 jours, et aucune pull request n’est ouverte. Ouvertebuild
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
nodejs/node#66076 · 2 commentaires ·
Les mainteneurs répondent en général sous 1 jour
-
`TextEncoder.encodeInto()` underfills the destination for some non-ASCII textPeut-être pris @XadillaX l’a pris il y a 49 jours. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 84/100
nodejs/node#65994 · 2 commentaires · 2 réactions ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de nodejs/node
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 85/100
pigeon189/zcode-fox-widget#17 · 1 commentaire ·
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
Les mainteneurs répondent en général sous 1 jour
-
Let TypeScript accept an initial object in ReactiveDictPeut-être pris @yograj-vijay-yadav l’a pris aujourd’hui. Ouvertebug good first issue help wanted workshop
Difficulté 2/5 1-3 heures Accessibilité débutants 92/100
meteor/meteor#14919 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
akitaonrails/FrankMD#268 ·
Les mainteneurs répondent en général sous 1 jour
-
good first issue
Difficulté 2/5 1-3 heures Accessibilité débutants 88/100
Les mainteneurs répondent en général sous 1 jour